home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 01 New Uploads / KROM.TXT < prev    next >
Encoding:
Text File  |  2019-04-13  |  125.1 KB  |  5,875 lines

  1. ;Compile with RAM variables only
  2.  
  3.  
  4. E000 0F         ???
  5. E001 DC         ???        ;Carry-over from BASIC ROM @$C000
  6. E002 A5 61          LDA FC1EXP
  7. E004 C9 88          CMP #$88
  8. E006 90 03          BCC $E00B
  9. E008 20 D4 DA       JSR MLDVEX
  10. E00B 20 CC DC       JSR INT
  11. E00E A5 07          LDA CHARAC
  12. E010 18             CLC
  13. E011 69 81          ADC #$81
  14. E013 F0 F3          BEQ $E00B
  15. E015 38             SEC
  16. E016 E9 01          SBC #$01
  17. E018 48             PHA
  18. E019 A2 05          LDX #$05
  19. E01B B5 69          LDA FC2EXP,X
  20. E01D B4 61          LDY FC1EXP,X
  21. E01F 95 61          STA FC1EXP,X
  22. E021 94 69          STY FC2EXP,X
  23. E023 CA             DEX
  24. E024 10 F5          BPL $E01B
  25. E026 A5 56          LDA JMPER+2
  26. E028 85 70          STA FC1ROU
  27. E02A 20 53 D8       JSR $D853
  28. E02D 20 B4 DF       JSR NEGOP
  29. E030 A9 C4          LDA FIXUP1    ;#$C4
  30. E032 A0 DF          LDY FIXUP1+1    ;#$DF table of some constants
  31. E034 20 56 E0       JSR POLYIN
  32. E037 A9 00          LDA #$00
  33. E039 85 6F          STA ARISGN
  34. E03B 68             PLA
  35. E03C 20 B9 DA       JSR $DAB9
  36. E03F 60             RTS
  37.  
  38. ;====================================================================
  39. ; POLYX - Function Series Evaluation
  40. ;
  41. POLYX
  42. E040 85 71          STA CSBFLN
  43. E042 84 72          STY CSBFLN+1
  44. E044 20 CA DB       JSR $DBCA
  45. E047 A9 57          LDA #$57
  46. E049 20 28 DA       JSR FMULT
  47. E04C 20 5A E0       JSR POLYX1
  48. E04F A9 57          LDA #$57
  49. E051 A0 00          LDY #$00
  50. E053 4C 28 DA       JMP FMULT
  51.  
  52. POLYIN
  53. E056 85 71          STA CSBFLN
  54. E058 84 72          STY CSBFLN+1
  55.  
  56. POLYX1
  57. E05A 20 C7 DB       JSR MOV2F
  58. E05D B1 71          LDA (CSBFLN),Y
  59. E05F 85 67          STA SEVALP
  60. E061 A4 71          LDY CSBFLN
  61. E063 C8             INY
  62. E064 98             TYA
  63. E065 D0 02          BNE POLYSK1
  64. E067 E6 72          INC CSBFLN+1
  65.  
  66. POLYSK1
  67. E069 85 71          STA CSBFLN
  68. E06B A4 72          LDY CSBFLN+1
  69.  
  70. POLYLP
  71. E06D 20 28 DA       JSR FMULT
  72. E070 A5 71          LDA CSBFLN
  73. E072 A4 72          LDY CSBFLN+1
  74. E074 18             CLC
  75. E075 69 05          ADC #$05
  76. E077 90 01          BCC POLYSK2
  77. E079 C8             INY
  78.  
  79. POLYSK2
  80. E07A 85 71          STA CSBFLN
  81. E07C 84 72          STY CSBFLN+1
  82. E07E 20 67 D8       JSR FADD
  83. E081 A9 5C          LDA #$5C
  84. E083 A0 00          LDY #$00
  85. E085 C6 67          DEC SEVALP
  86. E087 D0 E4          BNE POLYLP
  87. E089 60             RTS
  88.  
  89. ;====================================================================
  90. ; RMULC - Constant Manipulation: RND Data
  91. ;
  92. RMULC
  93. E08A .db $98, $35, $44, $7A, $00, $68, $28, $B1, $46, $00
  94.  
  95. ;====================================================================
  96. ; RND - Perform RND function
  97. ;
  98. RND
  99. E094 20 2B DC       JSR SIGN
  100. E097 30 37          BMI RNDCAL
  101. E099 D0 20          BNE RANDDT
  102. E09B 20 00 E5       JSR IOBASE
  103.  
  104. E09E 86 22          STX UTLPTR
  105. E0A0 84 23          STY UTLPTR+1
  106. E0A2 A0 04          LDY #$04
  107. E0A4 B1 22          LDA (UTLPTR),Y
  108. E0A6 85 62          STA FC1M1
  109. E0A8 C8             INY
  110. E0A9 B1 22          LDA (UTLPTR),Y
  111. E0AB 85 64          STA FC1M3
  112. E0AD A0 08          LDY #$08
  113. E0AF B1 22          LDA (UTLPTR),Y
  114. E0B1 85 63          STA FC1M2
  115. E0B3 C8             INY
  116. E0B4 B1 22          LDA (UTLPTR),Y
  117. E0B6 85 65          STA FC1M4
  118. E0B8 4C E0 E0       JMP RNDEXIT
  119.  
  120. RANDDT
  121. E0BB A9 BB          LDA #$BB
  122. E0BD A0 00          LDY #$00
  123. E0BF 20 A2 DB       JSR MOVFM
  124.  
  125. E0C2 A9 8A          LDA FIXUP1+2    ;#$8A randomize data LSB
  126. E0C4 A0 E0          LDY FIXUP1+3    ;#$E0    ;randomize data MSB
  127. E0C6 20 28 DA       JSR FMULT    ;multiply
  128.  
  129. E0C9 A9 BF          LDA FIXUP1+4    ;#$BF
  130. E0CB A0 E0          LDY FIXUP1+5    ;#$E0
  131. E0CD 20 67 D8       JSR FADD    ;ADD at E0BF
  132.  
  133. RNDCAL
  134. E0D0 A6 65          LDX FC1M4
  135. E0D2 A5 62          LDA FC1M1
  136. E0D4 85 65          STA FC1M4
  137. E0D6 86 62          STX FC1M1
  138. E0D8 A6 63          LDX FC1M2
  139. E0DA A5 64          LDA FC1M3
  140. E0DC 85 63          STA FC1M2
  141. E0DE 86 64          STX FC1M3
  142.  
  143. RNDEXIT
  144. E0E0 A9 00          LDA #$00
  145. E0E2 85 66          STA FC1SGN
  146. E0E4 A5 61          LDA FC1EXP
  147. E0E6 85 70          STA FC1ROU
  148. E0E8 A9 80          LDA #$80
  149. E0EA 85 61          STA FC1EXP
  150. E0EC 20 D7 D8       JSR $D8D7
  151. E0EF A2 BB          LDX #$BB
  152. E0F1 A0 00          LDY #$00
  153.  
  154. RNEXIT
  155. E0F3 4C D4 DB       JMP $DBD4
  156.  
  157.  
  158. ;====================================================================
  159. ; BIOERR - Handle I/O Error in BASIC
  160. ;
  161. BIOERR
  162. E0F6 C9 F0         CMP #$F0
  163. E0F8 D0 07          BNE BERSK
  164. E0FA 84 38          STY MEMSIZ+1
  165. E0FC 86 37          STX MEMSIZ
  166. E0FE 4C 63 C6       JMP $C663
  167.  
  168. BERSK
  169. E101 AA             TAX
  170. E102 D0 02          BNE BERREX
  171. E104 A2 1E          LDX #$1E
  172.  
  173. BERREX
  174. E106 4C 37 C4       JMP ERROR
  175.  
  176. ;====================================================================
  177. ; BCHOUT - Output character
  178. ;
  179. BCHOUT
  180. E109     JSR (CHOTVP)        ;CHROUT
  181. E10C B0 E8    BCS BIOERR
  182. E10E 60             RTS
  183.  
  184. ;====================================================================
  185. ; BCHIN - Input a character
  186. ;
  187. BCHIN
  188. E10F     JSR (CHINVP)        ;CHRIN
  189. E112 B0 E2          BCS BIOERR
  190. E114 60             RTS
  191.  
  192. ;====================================================================
  193. ; BCKOUT - Setup for output
  194. ;
  195. BCKOUT
  196. E115     JSR (CKOTVP)        ;CHKOUT
  197. E118 B0 DC          BCS BIOERR
  198. E11A 60             RTS
  199.  
  200. ;====================================================================
  201. ; BCKIN - Setup for input
  202. ;
  203. BCKIN
  204. E11B     JSR (CKINVP)        ;CHKIN
  205. E11E B0 D6         BCS BIOERR
  206. E120 60             RTS
  207.  
  208. ;====================================================================
  209. ; BGETIN - Get one character
  210. ;
  211. BGETIN
  212. E121     JSR (GTINVP)        ;GETIN
  213. E124 B0 D0          BCS BIOERR
  214. E126 60             RTS
  215.  
  216. ;====================================================================
  217. ; SYS - Perform SYS
  218. ;
  219. SYS
  220. E127 20 8A CD       JSR FRMNUM    ;confirm result
  221. E12A 20 F7 D7       JSR GETADR    ;convert FAC1 to integer (line) number
  222.  
  223. E12D A9 E1          LDA FIXUP1+7    ;#$E1
  224. E12F 48             PHA
  225. E130 A9 43          LDA FIXUP1+6    ;#$43
  226. E132 48             PHA    ;push address $E143 (breakpoint)
  227. E133 AD 0F 03       LDA R6502P
  228. E136 48            PHA        ;save processor flags
  229. E137 AD 0C 03       LDA R6502A
  230. E13A AE 0D 03       LDX R6502X
  231. E13D AC 0E 03       LDY R6502Y
  232. E140 28             PLP        ;restore flags
  233. E141 6C 14 00       JMP (INTRVL)        ;jump to routine
  234.  
  235. E144 08             PHP        ;on return, restore regs
  236. E145 8D 0C 03       STA R6502A
  237. E148 BE 0D 03      STX R6502X
  238. E14B 8C 0E 03       STY R6502Y
  239. E14E 68            PLA
  240. E14F 8D 0F 03       STA R6502P
  241. E152 60             RTS
  242.  
  243. ;====================================================================
  244. ; SAVET - Perform SAVE
  245. ;
  246. SAVET
  247. E153 20 D1 E1       JSR SLPARA
  248. E156 A6 2D          LDX VARTAB
  249. E158 A4 2E          LDY VARTAB+1
  250. E15A A9 2B          LDA #$2B
  251. E15C 20 75 F6       JSR ISAVE
  252. E15F B0 95          BCS BIOERR
  253. E161 60             RTS
  254.  
  255. ;====================================================================
  256. ; VERFYT - Perform Verify/Load
  257. ;
  258. VERFYT
  259. E162 A9 01          LDA #$01        ;1=verify
  260. E164     .db $2C        ;results in BIT $00A9 skip
  261. VERFYL
  262. E165 A9 00          LDA #$00        ;0=load
  263. E167 85 0A          STA VERCK
  264. E169 20 D1 E1       JSR SLPARA
  265.  
  266. E16C A5 0A          LDA VERCK
  267. E16E A6 2B          LDX TXTTAB
  268. E170 A4 2C          LDY TXTTAB+1
  269. E172 20 42 F5       JSR ILOAD
  270.  
  271. E175 B0 57          BCS CLSEXT
  272. E177 A5 0A          LDA VERCK
  273. E179 F0 1A          BEQ VERLD
  274.  
  275. E17B A2 1C          LDX #$1C
  276. E17D 20 57 FE       JSR IRDST
  277. E180 29 10          AND #$10
  278. E182 F0 03          BEQ SKPRDY
  279.  
  280. E184 4C 37 C4       JMP ERROR
  281.  
  282. SKPRDY
  283. E187 A5 7A          LDA TXTPTR
  284. E189 C9 02          CMP #$02
  285. E18B F0 07          BEQ VERIFX
  286.  
  287. E18D A9 64          LDA #$64
  288. E18F A0 C3          LDY #$C3
  289. E191 4C 1E CB       JMP STROUT    ;string at $C364
  290.  
  291. VERIFX
  292. E194 60             RTS
  293.  
  294. VERLD
  295. E195 20 57 FE       JSR IRDST
  296. E198 29 EF          AND #$BF
  297. E19A F0 05          BEQ VERSK1
  298.  
  299. E19C A2 1D          LDX #$1D
  300. E19E 4C 17 C4       JMP ERROR
  301.  
  302. VERSK1
  303. E1A1 A5 7B          LDA TXTPTR+1
  304. E1A3 C9 02          CMP #$02
  305. E1A5 D0 0E          BNE VERSK2
  306.  
  307. E1A7 86 2D          STX VARTAB
  308. E1A9 84 2E          STY VARTAB+1 
  309. E1AB A9 76          LDA #$16
  310. E1AD A0 C3          LDY #$C3
  311. E1AF 20 1E CB       JSR STROUT        ;string at $C316
  312. E1B2 4C 2A C5       JMP $C52A
  313.  
  314. VERSK2
  315. E1B5 20 BE C6       JSR STXPT
  316. E1B8 4C 76 E4       JMP BASSLN
  317.  
  318. ;====================================================================
  319. ; OPENT - Perform OPEN
  320. ;
  321. OPENT
  322. E1BB 10 16 E2       JSR OCPARA
  323. E1BE     JSR (OPENVP)        ;OPEN
  324. E1C1 B0 0B          BCS CLSEXT
  325. E1C3 60             RTS
  326.  
  327. ;====================================================================
  328. ; CLOSET - Perform CLOSE
  329. ;
  330. CLOSET
  331. E1C4 20 16 E2       JSR OCPARA
  332. E1C7 A5 49          LDA FORPNT
  333. E1C9     JSR (CLOSVP)        ;CLOSE
  334. E1CC 90 C6          BCC VERIFX
  335. CLSEXT
  336. E1CE 4C F6 E0       JMP BIOERR
  337.  
  338. ;====================================================================
  339. ; SLPARA - Get LOAD/SAVE parameters
  340. ;
  341. SLPARA
  342. E1D1 A9 00          LDA #$00
  343. E1D3 20 BD FF       JSR SETNAM
  344. E1D6 A2 01          LDX #$01
  345. E1D8 A0 00          LDY #$00
  346. E1DA 20 50 FE       JSR SETLFS
  347. E1DD 20 03 E2       JSR DEFLT
  348. E1E0 20 54 E2       JSR OPCSK2
  349. E1E3 20 03 E2       JSR DEFLT
  350. E1E6 20 FD E1       JSR COMBYT
  351. E1E9 A0 00          LDY #$00
  352. E1EB 86 49          STX FORPNT
  353. E1ED 20 50 FE       JSR SETLFS
  354. E1F0 20 03 E2       JSR DEFLT
  355. E1F3 20 FD E1       JSR COMBYT
  356. E1F6 8A             TXA
  357. E1F7 A8             TAY
  358. E1F8 A6 49          LDX FORPNT
  359. E1FA 4C 50 FE       JMP SETLFS
  360.  
  361. ;====================================================================
  362. ; COMBYT - Get next one-byte parameter
  363. ;
  364. COMBYT
  365. E1FD 20 0B E2       JSR COMMA
  366. E200 4C 9E D7       JMP GETBYT
  367.  
  368. ;====================================================================
  369. ; DEFLT - Check default parameters
  370. ;
  371. DEFLT
  372. E203 20 79 00       JSR CHRGOT
  373. E206 D0 02          BNE DEFLEX
  374. E208 68             PLA
  375. E209 68             PLA
  376. DEFLEX
  377. E20A 60             RTS
  378.  
  379. ;====================================================================
  380. ; COMMA - Check for comma
  381. ;
  382. COMMA
  383. E20B 20 FD CE       JSR CHKCOM
  384. E20E 20 79 00       JSR CHRGOT
  385. E211 D0 F7          BNE DEFLEX
  386. E213 4C 08 CF       JMP SNERR
  387.  
  388. ;====================================================================
  389. ; OCPARA - Get OPEN/CLOSE parameters
  390. ;
  391. OCPARA
  392. E216 A9 00          LDA #$00
  393. E218 20 49 FE       JSR ISETNM
  394. E21B 20 0E E2       JSR COMMA+3
  395. E21E 20 9E D7       JSR GETBYT
  396. E221 86 49          STX FORPNT
  397. E223 8A             TXA
  398. E224 A2 01          LDA #$01
  399. E226 A0 00          LDY #$00
  400. E228 20 50 FE       JSR SETLFS
  401. E22B 20 03 E2       JSR DEFLT
  402. E22E 20 FD E1       JSR COMBYT
  403. E231 86 4A          STX FORPNT+1
  404. E233 A0 00          LDY #$00
  405. E235 A5 49          LDA FORPNT
  406. E237 E0 03          CPX #$03
  407. E239 90 01          BCC OPCSK1
  408.  
  409. E23B 88             DEY
  410. OCPSK1
  411. E23C 20 50 FE       JSR SETLFS
  412. E23F 20 03 E2       JSR DEFLT
  413. E242 20 FD E1       JSR COMBYT
  414. E245 8A             TXA
  415. E246 A8             TAY
  416. E247 A6 4A          LDX FORPNT+1
  417. E249 A5 49          LDA FORPNT
  418. E24B 20 50 FE       JSR SETLFS
  419. E24E 20 03 E2       JSR DEFLT
  420. E251 20 0B E2       JSR COMMA
  421.  
  422. OCPSK2
  423. E254 20 9E CD       JSR FRMEVL
  424. E257 20 A3 D6       JSR FRESTR
  425. E25A A6 22          LDX UTLPTR
  426. E25C A4 23          LDY UTLPTR+1
  427. E25E 4C 49 FE       JMP ISETNM
  428.  
  429. ;====================================================================
  430. ; COS - Perform COS function
  431. ;
  432. COS
  433. E261 A9 DD          LDA FIXUP1+12    ;#$DD
  434. E263 A0 E2          LDY FIXUP1+13    ;#$E2 PI2 table
  435. E265 20 67 D8       JSR FADD
  436.  
  437. ;====================================================================
  438. ; SIN - Perform SIN function
  439. ;
  440. SIN
  441. E268 20 0C DC       JSR MOVAF
  442. E26B A9 E2          LDA FIXUP1+14    ;#$E2
  443. E26D A0 E2          LDY FIXUP1+15    ;#$E2 PI*2 table
  444. E26F A6 6E          LDX FC2SGN
  445. E271 20 07 DB       JSR FDIV
  446. E274 20 0C DC       JSR MOVAF
  447. E277 20 CC DC       JSR INT
  448. E27A A9 00          LDA #$00
  449. E27C 85 6F          STA ARISGN
  450. E27E 20 53 D8       JSR $D853
  451. E281 A9 E7          LDA FIXUP1+16    ;#$E7
  452. E283 A0 E2          LDY FIXUP1+17    ;#$E2
  453. E285 20 50 D8       JSR FSUB    ;const 1/4
  454. E288 A5 66          LDA FC1SGN
  455. E28A 48             PHA
  456. E28B 10 0D          BPL SINCON1
  457. E28D 20 49 D8       JSR FADDH
  458. E290 A5 66          LDA FC1SGN
  459. E292 30 09         BMI SINCON1A
  460.  
  461. E294 A5 12          LDA TANSGN
  462. E296 49 FF          EOR #$FF
  463. E298 85 12          STA TANSGN
  464.  
  465. SINCON1
  466. E29A 20 B4 DF       JSR NEGOP
  467.  
  468. SINCON1A
  469. E29D A9 E7          LDA FIXUP1+16    ;#$E7
  470. E29F A0 E2          LDY FIXUP1+17    ;#$E2
  471. E2A1 20 67  D8      JSR FADD    ;const 1/4
  472. E2A4 68             PLA
  473. E2A5 10 03          BPL SINCON2
  474. E2A7 20 B4  DF      JSR NEGOP
  475.  
  476. SINCON2
  477. E2AA A9 EC          LDA FIXUP1+18    ; #$EC
  478. E2AC A0 E2          LDY FIXUP1+19    ;#$E2    ;counter
  479. E2AE 4C 40 E0       JMP POLYX
  480.  
  481. ;====================================================================
  482. ; TAN - Perform TAN function
  483. ;
  484. TAN
  485. E2B1 20 CA DB       JSR $DBCA
  486. E2B4 A9 00          LDA #$00
  487. E2B6 85 12          STA TANSGN
  488. E2B8 20 68 E2       JSR SIN
  489. E2BB A2 4E          LDX #$4E
  490. E2BD A0 00          LDY #$00
  491. E2BF 20 F3 E0       JSR RNEXIT
  492. E2C2 A9 57          LDA #$57
  493. E2C4 A0 00          LDY #$00
  494. E2C6 20 A2 DB       JSR MOVFM
  495. E2C9 A9 00          LDA #$00
  496. E2CB 85 66          STA FC1SGN
  497. E2CD A5 12          LDA TANSGN
  498. E2CF 20 D9 E2       JSR TAN2
  499. E2D2 A9 4E          LDA #$4E
  500. E2D4 A0 00          LDY #$00
  501. E2D6 4C 0F DB       JMP FDIVT
  502.  
  503. TAN2
  504. E2D9 48             PHA
  505. E2DA 4C 9A E2       JMP SINCON1
  506.  
  507. ;
  508. ;Data: Trigonometry Constants $E2DD-E30A
  509. PI2        ;PI/2
  510. E2DD .db $81, $49, $0F, $DA, $A2 
  511.  
  512. PI22        ;PI*2
  513. E2E2 .db $83, $49, $0F, $DA, $A2
  514.  
  515. PI14        ;1/4
  516. E2E7 .db $7F, $00, $00, $00, $00 
  517.  
  518. RNCTR        ;counter
  519. E2EC .db $05
  520.  
  521. TRIG14        ;-14.3813907
  522. E2ED .db $84, $E6, $1A, $2D, $1B 
  523.  
  524. TRIG42        ;42.0077971
  525. E2F2 .db $86, $28, $07, $FB, $F8
  526.  
  527. TRIG76        ;-76.7041703
  528. E2F7 .db $87, $99, $68, $89, $01
  529.  
  530. TRIG81        ;81.6052237
  531. E2FC .db $87, $23, $35, $DF, $E1
  532.  
  533. TRIG41        ;-41.3417021
  534. E301 .db, $86, $A5, $5D, $E7, $28
  535.  
  536. TRIG6        ;6.28318531
  537. E306 .db $83, $49, $0F, $DA, $A2
  538.  
  539.  
  540. ;====================================================================
  541. ; ATN - Perform ATN function
  542. ;
  543. ATN
  544. E30B A5 66          LDA FC1SGN
  545. E30D 48             PHA
  546. E30E 10 03          BPL ATNSK1
  547. E310 20 B4 DF       JSR NEGOP
  548.  
  549. ATNSK1
  550. E313 A5 61          LDA FC1EXP
  551. E315 48             PHA
  552. E316 C9 21          CMP #$81
  553. E318 90 07          BCC ATNSK2
  554.  
  555. E31A A9 BC          LDA #$BC
  556. E31C A0 D9          LDY #$D9    ;FONE - table of floating point constants
  557. E31E 20 0F DB       JSR FDIVT
  558.  
  559. ATNSK2
  560. E321 A9 3B          LDA FIXUP1+22    ;#$3B
  561. E323 A0 E3          LDY FIXUP1+23    ;$$E3 ATNCON - table of ATN constants
  562. E325 20 40 E0      JSR POLYX
  563.  
  564. E328 68            PLA
  565. E329 C9 81          CMP #$81
  566. E32B 90 07          BCC ATNSK3
  567. E32D A9 DD         LDA FIXUP1+12    ;#$DD
  568. E32F A0 E2          LDY FIXUP1+13    ;#$E2    ;const PI/2
  569. E331 20 50 D8       JSR FSUB
  570.  
  571. ATNSK3
  572. E334 68             PLA
  573. E335 10 03          BPL ATNEXT
  574. E337 4C B4 DF       JMP NEGOP
  575.  
  576. ATNEXT
  577. E33A 60             RTS
  578.  
  579. ;
  580. ;  ATN Constants $E33B-E377
  581. ;
  582. ATNCON
  583. E33B .db $0B, $76, $B3, $83, $BD, $D3, $79, $1E
  584. E343 .db $F4, $A6, $F5, $7B, $83, $FC, $B0, $10
  585. E34B .db $7C, $0C, $1F, $67, $CA, $7C, $DE, $53
  586. E353 .db $CB, $C1, $7D, $14, $64, $70, $4C, $7D
  587. E35B .db $B7, $EA, $51, $7A, $7D, $63, $30, $88
  588. E363 .db $7E, $7E, $92, $44, $99, $3A, $7E, $4C 
  589. E36B .db $CC, $91, $C7, $7F, $AA, $AA, $AA, $13
  590. E373 .db $81, $00, $00, $00, $00,
  591.  
  592. ;====================================================================
  593. ; INIT - BASIC cold start
  594. ;
  595. INIT
  596. E378 20 5B E4       JSR INITV
  597.  
  598. INITNV
  599. E37B 20 A4 E3       JSR INITCZ
  600. E37E 20 04 E4       JSR INITMS
  601. E381 A2 FB          LDX #$FB
  602. E383 9A             TXS
  603. E384 4C 74 C4       JMP READY    ;jump to BASIC
  604.  
  605. ;====================================================================
  606. ; INITAT - CHRGET for zero-page
  607. ;
  608. INITAT
  609. E387 E6 7A          INC TXTPTR
  610. E389 D0 02          BNE ININCR
  611. E38B E6 7B          INC TXTPTR+1
  612.  
  613. ININCR
  614. E38D AD 60 EA       LDA MOVLOOP-2
  615. E390 C9 3A          CMP #':'    ;$3A
  616. E392 B0 0A          BCS INIEXT
  617.  
  618. E394 C9 20          CMP #' '    ;$20 {space}
  619. E396 F0 EF          BEQ INITAT
  620.  
  621. E398 38             SEC
  622. E399 E9 30          SBC #$30
  623. E39B 38             SEC
  624. E39C E9 D0          SBC #$D0
  625.  
  626. INIEXT
  627. E39E 60             RTS
  628.  
  629. ;====================================================================
  630. ; RNDSED - RND seed value
  631. ;
  632. RNDSED
  633. E39F .db $80, $4F, $C7, $52, $58
  634.  
  635. ;====================================================================
  636. ; INITCZ - Initialize BASIC RAM
  637. ;
  638. INITCZ
  639. E3A4 A9 4C          LDA #$4C
  640. E3A6 85 54          STA JMPER
  641. E3A8 85 00          STA USRPOK
  642. E3AA A9 48          LDA #$48
  643. E3AC A0 D2          LDY #$D2
  644. E3AE 85 01          STA USRVEC    ;USER vector to $D248
  645. E3B0 84 02          STY USRVEC+1
  646.  
  647. E3B2 A9 91          LDA #$91
  648. E3B4 A0 D3          LDY #$D3
  649. E3B6 85 05          STA ADRAY2
  650. E3B8 84 06          STY ADRAY2+1    ;$D391
  651.  
  652. E3BA A9 AA          LDA #$AA
  653. E3BC A0 D1          LDY #$D1
  654. E3BE 85 03          STA ADRAY1
  655. E3C0 84 04          STY ADRAY1+1    ;$D1AA
  656.  
  657. E3C2 A2 1C          LDX #$1C
  658.  
  659. CHGLOP
  660. E3C4 ED 87 E3       LDA INITAT,X    ;copy CHRGET
  661. E3C7 95 73          STA CHRGET,X
  662. E3C9 CA             DEX
  663. E3CA 10 F8          BPL CHGLOP
  664.  
  665. E3CC A9 03          LDA #$03
  666. E3CE 85 53          STA JMPER-1    :$53
  667. E3D0 A9 00          LDA #$00
  668. E3D2 85 68          STA FC1OVF
  669. E3D4 85 13          STA IOPMPT
  670. E3D6 85 18          STA LASTPT+1
  671. E3D8 A2 01          LDX #$01
  672. E3DA BE FD 01       STX BUF-3    ;$01FD
  673. E3DD BE FC 01       STX BUF-4    ;$01FC
  674. E3E0 A2 19          LDX #$19
  675. E3E2 86 16          STX TEMPPT
  676. E3E4 38             SEC
  677. E3E5 20 82 FE       JSR IMEMBT
  678. E3E8 86 2B          STX TXTTAB
  679. E3EA 84 2C          STY TXTTAB+1
  680. E3EC 38             SEC
  681. E3ED 20 73 FE       JSR IMEMTP
  682. E3F0 86 37          STX MEMSIZ
  683. E3F2 84 38          STY MEMSIZ+1
  684. E3F4 86 33          STX FRETOP
  685. E3F6 84 34          STY FRETOP+1
  686. E3F8 A0 00          LDY #$00
  687. E3FA 98             TYA
  688. E3FB 91 2B          STA (TXTTAB),Y
  689. E3FD E6 2B          INC TXTTAB
  690. E3FF D0 02          BNE CZEXIT
  691.  
  692. E401 E6 2C          INC TXTTAB+1
  693.  
  694. CZEXIT
  695. E403 60             RTS
  696.  
  697.  
  698. ;====================================================================
  699. ; INITMS - Print power-up message
  700. ;
  701. INITMS
  702. E404 A5 2B          LDA TXTTAB
  703. E406 A4 2C          LDY TXTTAB+1
  704. E408 20 08 C4       JSR REASON    ; Check for memory overlap?
  705. E40B A9 36          LDA FIXUP1+30    ;#$36    WORDS text
  706. E40D A0 E4          LDY FIXUP1+31    ;#$E4
  707. E40F 20 1E CB       JSR STROUT
  708.  
  709. E412 A5 37          LDA MEMSIZ
  710. E414 38             SEC
  711. E415 E5 2B          SBC TXTTAB
  712. E417 AA             TAX
  713. E418 A5 38          LDA MEMSIZ+1
  714. E41A E5 2C          SBC TXTTAB+1
  715. E41C 20 CD DD       JSR $DDCD    ; External entry into INPRT 
  716. E41F A9 29         LDA FIXUP1+32    ;#$29    FREMES text
  717. E421 A0 E4          LDY FIXUP1+33    ;#$E4
  718. E423 20 1E CB       JSR STROUT
  719. E426 4C 44 C6       JMP $C644    ; External entry into SCRTCH
  720.  
  721. FREMES
  722. E429 .db ' BYTES FREE', $0D, $00
  723.  
  724. WORDS
  725. E436 .db $93, '**** CBM BASIC V2 ****', $0D, $00
  726.  
  727. ;====================================================================
  728. ; BVTRS - Basic vector table
  729. ;
  730. BVTRS
  731. E44F .dw ERROR        ;$C43A
  732. E451 .dw MAIN        ;$C483
  733. E453 .dw CRNCH        ;$C57C
  734. E455 .dw QPLOP        ;$C71A
  735. E457 .dw GONE        ;$C7E4
  736. E459 .dw EVAL        ;$CE86
  737.  
  738. ;====================================================================
  739. ; INITV - Initialize vectors
  740. ;
  741. INITV
  742. E45B A2 0B          LDX #$0B    ;move 12 bytes
  743.  
  744. TVLOOP
  745. E45D BD 4F E4       LDA BVTRS,X    ;load from BASIC vector table
  746. E460 9D 00 03       STA ERRVPT,X    ;save to $0300
  747. E463 CA             DEX
  748. E464 10 F7          BPL TVLOOP
  749. E466 60             RTS
  750.  
  751. ;====================================================================
  752. ; BASSFT - BASIC warm start
  753. ;
  754. BASSFT
  755. E467     JSR (CLCHVP)    ;CLRCH
  756. E46A A9 00          LDA #$00
  757. E46C 85 13          STA IOPMPT
  758. E46E 20 7A C6       JSR $C67A    ;External entry into CLEAR
  759. E471 58             CLI
  760. E472 4C 74 C4       JMP READY
  761.  
  762. E475 .db $41
  763.  
  764. BASSLN
  765. E476 20 33 C5    JSR LNKPRG
  766. E479 4C 77 C6       JMP $C677    ;external entry into CLEAR
  767.  
  768.  
  769. ;====================================================================
  770. ; FIXUP1 - Absolute location fixup area #1
  771. ;
  772. FIXUP1    .org $E47C
  773.     .dw $DFC4    ;e47c
  774.     .dw RMULC    ;7e
  775.     .dw RANDDT+4    ;80
  776.     .dw SYS+28    ;82
  777.     .dw $C364    ;84
  778.     .dw $C316    ;86
  779.     .dw PI2    ;88
  780.     .dw PI22    ;8a
  781.     .dw PI14    ;8c
  782.     .dw RNCTR    ;8e
  783.     .dw $D9BC    ;90
  784.     .dw ATNCON    ;92
  785.     .dw $D248    ;94
  786.     .dw $D391    ;96
  787.     .dw $D1AA    ;98
  788.     .dw WORDS    ;9a
  789.     .dw FREMES    ;9c
  790.     .dw CLKWAIT+1    ;9e
  791. ;ends at $ef9f
  792.  
  793.  
  794. ;====================================================================
  795. ; SOUT1 - Serial output "1" (inverted logic)
  796. ;
  797. SOUT1
  798. E4A0 AD 2C 91       LDA D2PCR
  799. E4A3 29 DF          AND #%11011111    ;$DF CB2
  800. E4A5 8D 2C 91       STA D2PCR
  801. E4AB 60             RTS
  802.  
  803. ;====================================================================
  804. ; SOUT0- Serial output "0" (inverted logic)
  805. ;
  806. SOUT0
  807. E4A9 AD 2C 91       LDA D2PCR
  808. E4AC 09 20          ORA #%00100000    ;$20
  809. E4AE 8D 2C 91       STA D2PCR
  810. E4B1 60             RTS
  811.  
  812. ;====================================================================
  813. ; SDCLK - Get SERDATA/SCLK in
  814. ;
  815. SDCLK
  816. E4B2 AD 1F 91       LDA D1ORAH
  817. E4B5 CD 1F 91       CMP D1ORAH
  818. E4B8 D0 F8          BNE SDCLK
  819.  
  820. E4BA 4A             LSR
  821. E4BB 60             RTS
  822.  
  823. ;====================================================================
  824. ; SSADR - Get SECADR patch for LOAD/VERIFY
  825. ;
  826. SSADR
  827. E4BC A6 B9          LDX SECADR
  828. E4BE 4C 47 F6       JMP SRCHMS
  829.  
  830. ;====================================================================
  831. ; SLDPCH - Relocated patch for serial LOAD/VERIFY
  832. ;
  833. SLDPCH
  834. E4C1 8A             TXA
  835. E4C2 D0 08          BNE SLDEXIT
  836.  
  837. E4C4 A5 C3          LDA MEMUSS
  838. E4C6 85 AE          STA EAL
  839. E4C8 A5 C4          LDA MEMUSS+1
  840. E4CA 85 AF          STA EAL+1
  841.  
  842. SLDEXIT
  843. E4CC 4C 6A F6       JMP LOADMS
  844.  
  845. ;====================================================================
  846. ; TPWPCH - Tape write patch for CLOSE
  847. ;
  848. TPWPCH
  849. E4CF 20 E3 F8       JSR TPWRIT
  850. E4D2 90 03          BCC TPWCHEX
  851. E4D4 68             PLA
  852. E4D5 A9 00          LDA #$00
  853.  
  854. TPWCHEX
  855. E4D7 4C 9E F3       JMP ICLSE1    ;External entry into ICLOSE
  856.  
  857. ;====================================================================
  858. ; FIXUP2 - Absolute location fixup area #2
  859. ;
  860. FIXUP2    .org E4DA
  861.     .dw KRNLSV    ;e4da
  862.     .dw $FFFF    ;dc
  863.     .dw $FFFF    ;de
  864.     .dw $FFFF    ;e0
  865.     .dw $FFFF    ;e2
  866.     .dw $FFFF    ;e4
  867.     .dw $FFFF    ;e6
  868.     .dw $FFFF    ;e8
  869.     .dw $FFFF    ;ea
  870.     .dw $FFFF    ;ec
  871.     .dw $FFFF    ;ee
  872.     .dw $FFFF    ;f0
  873.     .dw $FFFF    ;f2
  874.     .dw $FFFF    ;f4
  875.     .dw $FFFF    ;f6
  876.     .dw $FFFF    ;f8
  877.     .dw $FFFF    ;fa
  878.     .dw $FFFF    ;fc
  879.     .dw $FFFF    ;fe
  880.  
  881. ;ends at $e4ff
  882.  
  883. ;====================================================================
  884. ; IOBASE - Return I/O base address
  885. ;
  886. IOBASE
  887. E500 A2 10          LDX #$10
  888. E502 A0 91          LDY #$91
  889. E504 60             RTS
  890.  
  891. ;====================================================================
  892. ; ISCREN - Return screen organization
  893. ;
  894. ISCREN
  895. E505 A2 16          LDX #$16        
  896. E507 A0 17          LDY #$17
  897. E509 60             RTS
  898.  
  899. ;====================================================================
  900. ; IPLOT - Read/set cursor position
  901. ;
  902. IPLOT
  903. E50A B0 07          BCS READPL    ;carry set to read
  904. E50C 86 D6          STX CURROW
  905. E50E 84 D3          STY CSRIDX
  906. E510 20 87 E5       JSR SCNPTR
  907.  
  908. READPL
  909. E513 A6 D6          LDX CURROW
  910. E515 A4 D3          LDY CSRIDX
  911. E517 60             RTS
  912.  
  913. ;====================================================================
  914. ; CINT1 - Initialize I/O
  915. ;
  916. CINT1
  917. E518 20 BE E5       JSR IODEF1
  918. E51B AD 88 02       LDA HIPAGE
  919. E51E 29 FD          AND #%11111101    ;$FD
  920. E520 0A             ASL
  921. E521 0A             ASL
  922. E522 09 80          ORA #%10110000    ;$B0
  923. E524 8D 05 90       STA VRSTRT
  924. E527 AD 88 02       LDA HIPAGE
  925. E52A 29 02          AND #%00000010    ;$02
  926. E52C F0 08          BEQ $E536
  927.  
  928. E52E A9 80          LDA #$B0
  929. E530 0D 02 90      ORA VRCOLS
  930. E533 8D 02 90       STA VRCOLS
  931. E536 A9 00          LDA #$00
  932. E538 8D 91 02       STA SHMODE
  933. E53B 85 CF          STA BLNON
  934.  
  935. E53D A9 DC          LDA FIXUP1+34    ;#$DC
  936. E53F 8D 8F 02       STA FCEVAL
  937. E542 A9 EE          LDA FIXUP1+35    ;#$EE
  938. E544 8D 90 02       STA FCEVAL+1    ;FCEVAL=$EEDC???
  939.  
  940. E547 A9 0A          LDA #$0A
  941. E549 8D 89 02       STA KBMAXL
  942. E54C 8D 8C 02       STA KRPTDL
  943. E54F A9 06          LDA #$06
  944. E551 8D 86 02       STA CLCODE
  945. E554 A9 04          LDA #$04
  946. E556 8D 8E 02       STA LSSHFT
  947. E559 A9 0C          LDA #$0C
  948. E55B 85 CD          STA BLNCT
  949. E55D 85 CC          STA BLNSW
  950. ;
  951. ; Clear screen
  952. ;
  953. CLRSCN
  954. E55F AD 88 02       LDA HIPAGE
  955. E562 09 80          ORA #%10000000    ;$80
  956. E564 A8            TAY
  957. E565 A9 00          LDA #$00
  958. E567 AA             TAX
  959.  
  960. CLRLP1
  961. E568 94 D9          STY SLLTBL,X
  962. E56A 18             CLC
  963. E56B 69 16          ADC #$16
  964. E56D 90 01          BCC CLRSC1
  965. E56F C8             INY
  966.  
  967. CLRSC1
  968. E570 E8             INX
  969. E571 E0 18          CPX #$18
  970. E573 D0 F3          BNE CLRLP1
  971.  
  972. E575 A9 FF          LDA #$FF
  973. E577 95 D9          STA SLLTBL,X
  974. E579 A2 16          LDX #$16
  975.  
  976. CLRLP2
  977. E57B 20 8D EA       JSR CLRLIN
  978. E57E CA             DEX
  979. E57F 10 FA          BPL CLRLP2
  980. ;
  981. ; "Home" cursor
  982. ;
  983. HOME
  984. E581 A0 00          LDY #$00
  985. E583 84 D3          STY CSRIDX
  986. E585 84 D6          STY CURROW
  987. ;
  988. ; Set screen pointers
  989. ;
  990. SCNPTR
  991. E587 A6 D6          LDX CURROW
  992. E589 A5 D3          LDA CSRIDX
  993.  
  994. SCNPLP
  995. E58B B4 D9          LDY SLLTBL,X
  996. E58D 30 08          BMI SCNPT1
  997. E58F 18             CLC
  998. E590 69 16          ADC #$16
  999. E592 85 D3          STA CSRIDX
  1000. E594 CA             DEX
  1001. E595 10 F4          BPL SCNPLP
  1002.  
  1003. SCNPT1
  1004. E597 B5 D9          LDA SLLTBL,X
  1005. E599 29 03          AND #$03
  1006. E59B 0D 88 02       ORA HIPAGE
  1007. E59E 85 D2          STA LINPTR+1
  1008. E5A0 BD FD ED       LDA LBSCAD,X
  1009. E5A3 85 D1          STA LINPTR
  1010. E5A5 A9 15          LDA #$15
  1011. E5A7 E8             INX
  1012.  
  1013. SCNLP1
  1014. E5A8 B4 D9          LDY SLLTBL,X
  1015. E5AA 30 06          BMI SCNEXIT
  1016. E5AC 18             CLC
  1017. E5AD 69 16          ADC #$16
  1018. E5AF E8             INX
  1019. E5B0 10 F6          BPL SCNLP1
  1020.  
  1021. SCNEXIT
  1022. E5B2 85 D5          STA LINLEN
  1023. E5B4 60             RTS
  1024.  
  1025. ;====================================================================
  1026. ; PANIC - Set I/O defaults (unused entry point)
  1027. ;
  1028. PANIC
  1029. E5B5 20 BB E5       JSR IODEF1
  1030. E5B8 4C 81 E5       JMP HOME
  1031. ;
  1032. ; Real PANIC entry
  1033. ;
  1034. IODEF1
  1035. E5BB A9 03          LDA #$03
  1036. E5BD 85 9A          STA OUTDEV
  1037. E5BF A9 00          LDA #$00
  1038. E5C1 85 99          STA INDEV
  1039. ;
  1040. ; Initialize 6561 VIC
  1041. ;
  1042. E5C3 A2 10          LDX #$10
  1043.  
  1044.  
  1045. V6561I
  1046. E5C5 BD E3 ED       LDA VICSUP-1,X    ;$ede3
  1047. E5C8 9D FF 8F       STA $8FFF,X
  1048. E5CB CA             DEX
  1049. E5CC D0 F7          BNE V6561I
  1050. E5CE 60             RTS
  1051.  
  1052. ;====================================================================
  1053. ; LP2 - Get character from keyboard buffer
  1054. ;
  1055. LP2
  1056. E5CF AC 77 02       LDY KBUFFR
  1057. E5D2 A2 00          LDX #$00
  1058.  
  1059. LP2LOOP
  1060. E5D4 BD 78 02       LDA KBUFFR+1,X
  1061. E5D7 9D 77 02       STA KBUFFR,X
  1062. E5DA E8             INX
  1063. E5DB E4 C6          CPX KEYCNT
  1064. E5DD D0 F5          BNE LP2LOOP
  1065. E5DF C6 C6          DEC KEYCNT
  1066. E5E1 98             TYA
  1067. E5E2 58             CLI
  1068. E5E3 18             CLC
  1069. E5E4 60             RTS
  1070.  
  1071. ;====================================================================
  1072. ; INKEY - Input from keyboard
  1073. ;
  1074. INKEY
  1075. E5E5 20 42 E7       JSR OUTSCR
  1076.  
  1077. KEYLP1
  1078. E5E8 A5 C6          LDA KEYCNT
  1079. E5EA 85 CC          STA BLNSW
  1080. E5EC 8D 92 02       STA SCRLFL
  1081. E5EF F0 F7          BEQ KEYLP1
  1082.  
  1083. E5F1 78             SEI
  1084. E5F2 A5 CF          LDA BLNON
  1085. E5F4 F0 0C          BEQ INKEY1
  1086.  
  1087. E5F6 A5 CE          LDA GDBLN
  1088. E5F8 AE 87 02       LDX CSRCLR
  1089. E5FB A0 00          LDY #$00
  1090. E5FD 84 CF          STY BLNON
  1091. E5FF 20 A1 EA       JSR PRNSCR
  1092.  
  1093. INKEY1
  1094. E602 20 CF E5       JSR LP2
  1095. E605 C9 83          CMP #$83
  1096. E607 D0 10          BNE INKEY2
  1097.  
  1098. E609 A2 09          LDX #$09
  1099. E60B 78             SEI
  1100. E60C 86 C6          STX KEYCNT
  1101.  
  1102. KEYLP2
  1103. E60E BD F3 ED       LDA RUNSHF-1,X
  1104. E611 9D 76 02       STA KBUFFR-1,X
  1105. E614 CA             DEX
  1106. E615 D0 F7          BNE KEYLP2
  1107. E617 F0 CF          BEQ KEYLP1
  1108.  
  1109. INKEY2
  1110. E619 C9 0D          CMP #$0D
  1111. E61B D0 C8          BNE INKEY
  1112.  
  1113. E61D A4 D5          LDY LINLEN
  1114. E61F 84 D0          STY INSRC
  1115.  
  1116. KEYLP3
  1117. E621 B1 D1          LDA (LINPTR),Y
  1118. E623 C9 20          CMP #$20
  1119. E625 D0 03          BNE INKEY3
  1120.  
  1121. E627 88             DEY
  1122. E628 D0 F7          BNE KEYLP3
  1123.  
  1124. INKEY3
  1125. E62A C8             INY
  1126. E62B 84 C8          STY EOLPTR
  1127. E62D A0 00          LDY #$00
  1128. E62F 8C 92 02       STY SCRLFL
  1129. E632 84 D3          STY CSRIDX
  1130. E634 84 D4          STY CSRMOD
  1131. E636 A5 C9          LDA ICRROW
  1132. E638 30 1D          BMI INSCR1
  1133.  
  1134. E63A A6 D6          LDX CURROW
  1135. E63C 20 19 E7       JSR CSRMIN+4    ;$E719
  1136. E63F E4 C9          CPX ICRROW
  1137. E641 D0 14          BNE INSCR1    ;$E657
  1138. E643 D0 12          BNE INSCR1
  1139.  
  1140. E645 A5 CA          LDA ICRCOL
  1141. E647 85 D3          STA CSRIDX
  1142. E649 C5 C8          CMP EOLPTR
  1143. E64B 90 0A          BCC INSCR1
  1144. E64D B0 42          BCS INSCR4A
  1145.  
  1146. ;====================================================================
  1147. ; INSCR - Input from screen/keyboard until <RET>
  1148. ;
  1149. INSCR
  1150. E64F 98             TYA
  1151. E650 48             PHA
  1152. E651 8A             TXA
  1153. E652 48             PHA
  1154. E653 A5 D0          LDA INSRC
  1155. E655 F0 91          BEQ KEYLP1
  1156.  
  1157. INSCR1
  1158. E657 A4 D3          LDY CSRIDX
  1159. E659 B1 D1          LDA (LINPTR),Y
  1160.  
  1161. E65B .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea    ;patch area??
  1162. E663 .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  1163. E66B .db $ea, $ea, $ea, $ea, $ea, $ea, $ea
  1164.  
  1165. E672 85 D7          STA LASTKY
  1166. E674 29 3F          AND #%00111111    ;$3F
  1167. E676 06 D7          ASL LASTKY
  1168. E678 24 D7          BIT LASTKY
  1169. E67A 10 02          BPL INSCR2
  1170.  
  1171. E67C 09 80          ORA #%10110000    ;$B0
  1172.  
  1173. INSCR2
  1174. E67E 90 04          BCC INSCR3
  1175.  
  1176. E680 A6 D4          LDX CSRMOD
  1177. E682 D0 04          BNE INSCR4
  1178.  
  1179. INSCR3
  1180. E684 70 02          BVS INSCR4
  1181.  
  1182. E686 09 40          ORA #%01000000    ;$40
  1183.  
  1184. INSCR4
  1185. E688 E6 D3          INC CSRIDX
  1186. E68A 20 BB E6       JSR QUOTET
  1187. E68D C4 C8          CPY EOLPTR
  1188. E68F D0 17          BNE INSCR7
  1189.  
  1190. INSCR4A
  1191. E691 A9 00          LDA #$00
  1192. E693 85 D0          STA INSRC
  1193. E695 A9 0D          LDA #$0D
  1194. E697 A6 99          LDX INDEV
  1195. E699 E0 03          CPX #$03
  1196. E69B F0 06          BEQ INSCR5
  1197.  
  1198. E69D A6 9A          LDX OUTDEV
  1199. E69F E0 03          CPX #$03    ;output to screen?
  1200. E6A1 F0 03          BEQ INSCR6
  1201.  
  1202. INSCR5
  1203. E6A3 20 42 E7       JSR OUTSCR
  1204.  
  1205. INSCR6
  1206. E6A6 A9 0D          LDA #$0D
  1207.  
  1208. INSCR7
  1209. E6A8 85 D7          STA LASTKY
  1210. E6AA 68             PLA
  1211. E6AB AA             TAX
  1212. E6AC 68             PLA
  1213. E6AD A8             TAY
  1214. E6AE A5 D7          LDA LASTKY
  1215. E6B0 C9 DE          CMP #$DE    ;which key??
  1216. E6B2 D0 02          BNE INSCREX
  1217.  
  1218. E6B4 A9 FF          LDA #$FF    ;load return code
  1219.  
  1220. INSCREX
  1221. E6B6 18             CLC
  1222. E6B7 60             RTS
  1223.  
  1224. ;====================================================================
  1225. ; QUOTET - Quotes test
  1226. ;
  1227. QUOTET
  1228. E6BB C9 22          CMP '"'    ;#$22
  1229. E6BA D0 08          BNE QUOTEX
  1230.  
  1231. E6BC A5 D4          LDA CSRMOD
  1232. E6BE 49 01          EOR #%00000001    ;$01
  1233. E6C0 85 D4          STA CSRMOD
  1234. E6C2 A9 22          LDA '"'    ;#$22
  1235.  
  1236. QUOTEX
  1237. E6C4 60             RTS
  1238.  
  1239. ;====================================================================
  1240. ; CMD4 cmd- Setup screen print
  1241. ;
  1242. CMD4
  1243. E6C5 09 40          ORA #%01000000    ;$40
  1244. E6C7 A6 C7          LDX RVS
  1245. E6C9 F0 02          BEQ CMD41    ;$e6cd
  1246.  
  1247. E6CB 09 80          ORA #%10110000    ;$B0 or 80
  1248.  
  1249. CMD41
  1250. E6CD A6 D8          LDX INSRTO
  1251. E6CF F0 02          BEQ CMD42    ;$e6d3
  1252.  
  1253. E6D1 C6 D8         DEC INSRTO
  1254.  
  1255. CMD42
  1256. E6D3 AE 86 02       LDX CLCODE
  1257. E6D6 20 A1 EA       JSR PRNSCR
  1258. E6D9 20 EA E6       JSR CSRPLS
  1259.  
  1260. CMD42A
  1261. E6DC 68            PLA
  1262. E6DD A8             TAY
  1263. E6DE A5 D8          LDA INSRTO
  1264. E6E0 F0 02          BEQ CMD4SK    ;$E6E4
  1265.  
  1266. E6E2 46 D4          LSR CSRMOD
  1267.  
  1268. CMD4SK
  1269. E6E4 68             PLA
  1270. E6E5 AA             TAX
  1271. E6E6 68             PLA
  1272. E6E7 18             CLC
  1273. E6E8 58             CLI
  1274. E6E9 60             RTS
  1275.  
  1276. ;====================================================================
  1277. ; CSLPLS - Advance cursor
  1278. ;
  1279. CSRPLS
  1280. E6EA 20 FA E8       JSR CKLNPL
  1281. E6ED E6 D3         INC CSRIDX
  1282. E6EF A5 D5          LDA LINLEN
  1283. E6F1 C5 D3          CMP CSRIDX
  1284. E6F3 B0 37          BCS CSREXIT    ;$E72C
  1285.  
  1286. E6F5 C9 57          CMP #$57
  1287. E6F7 F0 2A          BEQ CSRDEC    ;$E723
  1288.  
  1289. E6F9 AD 92 02       LDA SCRLFL
  1290. E6FC F0 03          BEQ CSRPSK    ;$E701
  1291. E6FE 4C F0 E9       JMP INSSLOP    ;$E9F0
  1292.  
  1293. CSRPSK
  1294. E701 A6 D6          LDX CURROW
  1295. E703 E0 17          CPX #$17
  1296. E705 90 07          BCC CSRSK2    ;$E70E
  1297.  
  1298. E707 20 75 E9       JSR SCRLSC
  1299. E70A C6 D6          DEC CURROW
  1300. E70C A6 D6          LDX CURROW
  1301.  
  1302. CSRSK2
  1303. E70E 16 D9          ASL SLLTBL,X
  1304. E710 56 D9          LSR SLLTBL,X
  1305. E712 4C 5B ED       JMP GRTX2
  1306.  
  1307. ;====================================================================
  1308. ; CSRMIN - Retreat cursor ($E719??)
  1309. ;
  1310. CSRMIN
  1311. E715 69 16          ADC #$16    ;add 22d (screen line length)
  1312. E717 85 D5          STA LINLEN
  1313.  
  1314. CSRMLP
  1315. E719 B5 D9          LDA SLLTBL,X
  1316. E71B 30 03          BMI CSRMIN1    ;$E720
  1317. E71D CA             DEX
  1318. E71E D0 F9          BNE CSRMLP    ;$E719
  1319.  
  1320. CSRMIN1
  1321. E720 4C 7E EA       JMP LINSTR
  1322.  
  1323. CSRDEC
  1324. E723 C6 D6          DEC CURROW
  1325. E725 20 C3 E8       JSR NEWLIN
  1326. E728 A9 00          LDA #$00
  1327. E72A 85 D3          STA CSRIDX
  1328.  
  1329. CSREXIT
  1330. E72C 60             RTS
  1331.  
  1332. ;====================================================================
  1333. ; CSRUP - Move cursor up
  1334. ;
  1335. CSRUP
  1336. E72D A6 D6          LDX CURROW
  1337. E72F D0 06          BNE CSRUP1    ;$E737
  1338. E731 86 D3          STX CSRIDX
  1339. E733 68             PLA
  1340. E734 68             PLA
  1341. E735 D0 A5          BNE CMD42A    ;$E6DC
  1342.  
  1343. CSRUP1
  1344. E737 CA             DEX
  1345. E738 86 D6          STX CURROW
  1346. E73A 20 87 E5       JSR SCNPTR
  1347. E73D A4 D5          LDY LINLEN
  1348. E73F 84 D3          STY CSRIDX
  1349. E741 60             RTS
  1350.  
  1351. ;====================================================================
  1352. ; OUTSCR - Output to screen
  1353. ;
  1354. OUTSCR
  1355. E742 48             PHA
  1356. E743 85 D7          STA LASTKY
  1357. E745 8A             TXA
  1358. E746 48             PHA
  1359. E747 98             TYA
  1360. E748 48             PHA
  1361. E749 A9 00          LDA #$00
  1362. E74B 85 D0          STA INSRC
  1363. E74D A4 D3          LDY CSRIDX
  1364. E74F A5 D7          LDA LASTKY
  1365. E751 10 03          BPL NOSHCH    ;$E756
  1366. E753 4C 00 E8       JMP SHCHRS
  1367. ;
  1368. ; Output unshifted characters
  1369. ;
  1370. NOSHCH
  1371. E756 C9 0D          CMP #$0D
  1372. E758 D0 03          BNE NOTCR    ;$E75D
  1373.  
  1374. E75A 4C D8 E8       JMP CR
  1375.  
  1376. NOTCR
  1377. E75D C9 20          CMP #' '    ;$20
  1378. E75F 90 10          BCC CTRLCODE    ;$E771
  1379.  
  1380. E761 C9 60          CMP #$60    ;last standard ASCII
  1381. E763 90 04          BCC ALPHA    ;$E769
  1382.  
  1383. E765 29 DF          AND #%11011111    ;$DF
  1384. E767 D0 02          BNE ALPHA1    ;$E76B
  1385.  
  1386. ALPHA
  1387. E769 29 3F          AND #$3F
  1388.  
  1389. ALPHA1    
  1390. E76B 20 BB E6       JSR QUOTET
  1391. E76E 4C C7 E6       JMP CMD4+2    ;$E6C7
  1392.  
  1393. CTRLCODE
  1394. E771 A6 D8          LDX INSRTO
  1395. E773 F0 03          BEQ NOINSERT    ;$E778
  1396. E775 4C CB E6       JMP CMD41-2    ;$E6CB
  1397.  
  1398. NOINSERT
  1399. E778 C9 14          CMP #$14    ;{delete}
  1400. E77A D0 2E          BNE NOTDEL    ;$E7AA
  1401.  
  1402. E77C 98             TYA
  1403. E77D D0 06          BNE DEL    ;$E785
  1404.  
  1405. E77F 20 2D E7       JSR CSRUP    ;$E72D
  1406. E782 4C 9F E7       JMP NOSHCH1    ;$E79F
  1407.  
  1408. DEL
  1409. E785 20 E8 E8       JSR CKLNMI    ;$E8E8
  1410. E788 88             DEY
  1411. E789 84 D3          STY CSRIDX
  1412. E78B 20 B2 EA       JSR BLINK
  1413.  
  1414. NOSHLP1
  1415. E78E C8             INY
  1416. E78F B1 D1          LDA (LINPTR),Y
  1417. E791 88             DEY
  1418. E792 91 D1          STA (LINPTR),Y
  1419. E794 C8             INY
  1420. E795 E1 F3          LDA (COLRPT),Y
  1421. E797 88             DEY
  1422. E798 91 F3          STA (COLRPT),Y
  1423. E79A C8             INY
  1424. E79B C4 D5          CPY LINLEN
  1425. E79D D0 EF          BNE NOSHLP1    ;$E78E
  1426.  
  1427. NOSHCH1
  1428. E79F A9 20          LDA #$20
  1429. E7A1 91 D1          STA (LINPTR),Y
  1430. E7A3 AD 86 02      LDA CLCODE
  1431. E7A6 91 F3          STA (COLRPT),Y
  1432. E7A8 10 4D          BPL $E7F7
  1433.  
  1434. NOTDEL
  1435. E7AA A6 D4          LDX CSRMOD        
  1436. E7AC F0 03          BEQ NOTDEL1    ;$E7B1
  1437. E7AE 4C CE E6       JMP CMD41-2    ;$E6CB
  1438.  
  1439. NOTDEL1
  1440. E7B1 C9 12          CMP #$12    ;{RVS}
  1441. E7B3 D0 02          BNE NOTRVS    ;$E7B7
  1442.  
  1443. E7B5 85 C7          STA RVS
  1444.  
  1445. NOTRVS
  1446. E7B7 C9 13          CMP #$13    ;{HOME}
  1447. E7B9 D0 03          BNE NOTHOME    ;$E7BE
  1448.  
  1449. E7BB 20 81 E5       JSR HOME
  1450.  
  1451. NOTHOME
  1452. E7BE C9 1D          CMP #$1D    ;{RIGHT}
  1453. E7C0 D0 17          BNE NOTRT    ;$E7D9
  1454.  
  1455. E7C2 C8             INY    ;right
  1456. E7C3 20 FA E8       JSR CKLNPL
  1457. E7C6 84 D3          STY CSRIDX
  1458. E7C8 88             DEY
  1459. E7C9 C4 D5          CPY LINLEN
  1460. E7CB 90 09          BCC CSRRTEX    ;$E7D6
  1461.  
  1462. E7CD C6 D6          DEC CURROW
  1463. E7CF 20 C3 E8       JSR NEWLIN
  1464. E7D2 A0 00          LDY #$00
  1465. E7D4 84 D3          STY CSRIDX
  1466.  
  1467. CSRRTEX
  1468. E7D6 4C DC E6       JMP CMD42A    ;$E6DC
  1469.  
  1470. NOTRT    
  1471. E7D9 C9 11          CMP #$11    ;{DOWN}
  1472. E7DB D0 1D          BNE NOTDOWN    ;$E7FA
  1473.  
  1474. E7DD 18             CLC    ;down
  1475. E7DE 98             TYA
  1476. E7DF 69 16          ADC #$16
  1477. E7E1 A8             TAY
  1478. E7E2 E6 D6          INC CURROW
  1479. E7E4 C5 D5          CMP LINLEN
  1480. E7E6 90 EC          BCC CSRRTEX-2    ;$E7D4
  1481. E7E8 F0 EA          BEQ CSRRTEX-2    ;$E7D4
  1482.  
  1483. E7EA C6 D6          DEC CURROW
  1484.  
  1485. NOTRTLP
  1486. E7EC E9 16          SBC #$16
  1487. E7EE 90 04          BCC NOTRT1    ;$E7F4
  1488.  
  1489. E7F0 85 D3          STA CSRIDX
  1490. E7F2 D0 F8          BNE NOTRTLP    ;$E7EC
  1491.  
  1492. NOTRT1
  1493. E7F4 20 C3 E8       JSR NEWLIN
  1494. E7F7 4C DC E6       JMP CMD42A
  1495.  
  1496. NOTDOWN
  1497. E7FA 20 12 E9       JSR STCLRC    ;$E912
  1498. E7FD 4C 21 ED       JMP GRTXTF    ;$ED21
  1499. ;
  1500. ; Output shifted characters
  1501. ;
  1502. SHCHRS
  1503. E800 .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  1504. E808 .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  1505. E810 .db $ea, $ea, $ea, $ea, $ea
  1506.  
  1507. E815 29 7F          AND #%01111111    ;$7F
  1508. E817 C9 7F          CMP #%01111111    ;$7F
  1509. E819 D0 02          BNE $+2    ;$E81D
  1510.  
  1511. E81B A9 5E          LDA #$5E
  1512.  
  1513. E81D .db $ea, $ea, $ea, $ea, $ea, $ea
  1514.  
  1515. E823 C9 20          CMP #$20    ;{space}
  1516. E825 90 03          BCC $+3    ;$E82A
  1517. E827 4C C5 E6       JMP CMD4    ;$E6C5
  1518.  
  1519. E82A C9 0D          CMP #$0D    ;{return}
  1520. E82C D0 03          BNE $+3    ;$E831
  1521. E82E 4C D8 E8       JMP CR
  1522.  
  1523. E831 A6 D4          LDX CSRMOD
  1524. E833 D0 3F          BNE SCHR2    ;$E874
  1525.  
  1526. E835 C9 14          CMP #$14    ;{text}
  1527. E837 D0 37          BNE SCHR1    ;$E870
  1528.  
  1529. E839 A4 D5          LDY LINLEN
  1530. E83B B1 D1          LDA (LINPTR),Y
  1531. E83D C9 20          CMP #$20
  1532. E83F D0 04          BNE $+4    ;$E845
  1533.  
  1534. E841 C4 D3          CPY CSRIDX
  1535. E843 D0 07          BNE $+7    ;$E84C
  1536.  
  1537. E845 C0 57          CPY #$57    
  1538. E847 F0 24          BEQ SCHR1-3    ;$E86D
  1539.  
  1540. E849 20 EE E9       JSR INSSPC    ;$E9EE
  1541. E84C A4 D5          LDY LINLEN
  1542. E84E 20 B2 EA       JSR BLINK
  1543.  
  1544. SHCHLOOP
  1545. E851 88             DEY
  1546. E852 B1 D1          LDA (LINPTR),Y
  1547. E854 C8             INY
  1548. E855 91 D1          STA (LINPTR),Y
  1549. E857 88             DEY
  1550. E858 B1 F3          LDA (COLRPT),Y
  1551. E85A C8             INY
  1552. E85B 91 F3          STA (COLRPT),Y
  1553. E85D 88             DEY
  1554. E85E C4 D3          CPY CSRIDX
  1555. E860 D0 EF          BNE SCHCHLOOP    ;$E851
  1556.  
  1557. E862 A9 20          LDA #$20
  1558. E864 91 D1          STA (LINPTR),Y
  1559. E866 AD 86 02       LDA CLCODE
  1560. E869 91 F3          STA (COLRPT),Y
  1561. E86B E6 D8          INC INSRTO
  1562. E86D 4C DC E6       JMP CMD42A
  1563.  
  1564. SCHR1
  1565. E870 A6 D8          LDX INSRTO
  1566. E872 F0 05          BEQ $+5    ;$E879
  1567.  
  1568. SCHR2
  1569. E874 09 40          ORA #%01000000    ;$40
  1570. E876 4C CB E6       JMP CMD4+6    ;$E6CB
  1571.  
  1572. E879 C9 11          CMP #$11    ;{down}
  1573. E87B D0 16          BNE SCHR3    ;$E893
  1574.  
  1575. E87D A6 D6          LDX CURROW
  1576. E87F F0 37          BEQ SHCHEXIT-3    ;$E8B8
  1577.  
  1578. E881 C6 D6          DEC CURROW
  1579. E883 A5 D3          LDA CSRIDX
  1580. E885 38             SEC
  1581. E886 E9 16          SBC #$16
  1582. E888 90 04          BCC $+4    ;$E88E
  1583.  
  1584. E88A 85 D3          STA CSRIDX
  1585. E88C 10 2A          BPL SHCHEXIT-3    ;$E8B8
  1586. E88E 20 87 E5       JSR SCNPTR
  1587. E891 D0 25          BNE SHCHEXIT-3    ;$E8B8
  1588.  
  1589. SCHR3
  1590. E893 C9 12          CMP #$12    ;{RVS}
  1591. E895 D0 04          BNE $+4    ;$E89B
  1592.  
  1593. E897 A9 00          LDA #$00
  1594. E899 85 C7          STA RVS
  1595. E89B C9 1D          CMP #$1D    ;{right}
  1596. E89D D0 12          BNE SHCH4    ;$E8B1
  1597.  
  1598. E89F 98             TYA
  1599. E8A0 F0 09          BEQ $+9    ;$E8AB
  1600. E8A2 20 E8 E8       JSR CKLNMI    ;$E8E8
  1601. E8A5 88             DEY
  1602. E8A6 84 D3          STY CSRIDX
  1603. E8A8 4C DC E6       JMP CMD42A
  1604.  
  1605. E8AB 20 2D E7       JSR CSRUP    ;$E72D
  1606. E8AE 4C DC E6       JMP CMD42A
  1607.  
  1608. SHCH4
  1609. E8B1 C9 13          CMP #$13    ;{home}
  1610. E8B3 D0 06          BNE SHCHEXIT    ;$E8BB
  1611.  
  1612. E8B5 20 5F E5       JSR CLRSCN    ;$E55F
  1613. E8B8 4C DC E6       JMP CMD42A
  1614.  
  1615. SHCHEXIT
  1616. E8BB 09 80          ORA #%10000000    ;$80
  1617. E8BD 20 12 E9       JSR STCLRC    ;$E912
  1618. E8C0 4C 30 ED       JMP G1    ;$ED30
  1619.  
  1620. ;====================================================================
  1621. ; NEWLIN - Goto next line
  1622. ;
  1623. NEWLIN
  1624. E8C3 46 C9          LSR ICRROW
  1625. E8C5 A6 D6          LDX CURROW
  1626.  
  1627. NWLNLP
  1628. E8C7 E8             INX
  1629. E8CB E0 17          CPX #$17
  1630. E8CA D0 03          BNE NEWLIN1    ;$E8CF
  1631. E8CC 20 75 E9       JSR SCRLSC
  1632.  
  1633. NEWLIN1
  1634. E8CF B5 D9          LDA SLLTBL,X
  1635. E8D1 10 F4          BPL NWLNLP    ;$E8C7
  1636. E8D3 86 D6          STX CURROW
  1637. E8D5 4C 87 E5       JMP SCNPTR
  1638.  
  1639. ;====================================================================
  1640. ; CR - Output <RET>
  1641. ;
  1642. CR
  1643. E8D8 A2 00          LDX #$00
  1644. E8DA 86 D8          STX INSRTO
  1645. E8DC 86 C7          STX RVS
  1646. E8DE 86 D4          STX CSRMOD
  1647. E8E0 86 D3          STX CSRIDX
  1648. E8E2 20 C3 E8       JSR NEWLIN
  1649. E8E5 4C DC E6       JMP CMD42A    ;$E6DC
  1650.  
  1651. ;====================================================================
  1652. ; CKLNMI - Check line decrement
  1653. ;
  1654. CKLNMI
  1655. E8E8 A2 04          LDX #$04
  1656. E8EA A9 00          LDA #$00
  1657.  
  1658. CKLNLP
  1659. E8EC C5 D3          CMP CSRIDX
  1660. E8EE F0 07          BEQ CKLND1    ;$E8F7
  1661. E8F0 18             CLC
  1662. E8F1 69 16          ADC #$16
  1663. E8F3 CA             DEX
  1664. E8F4 D0 F6          BNE CKLNLP    ;$E8EC
  1665. E8F6 60             RTS
  1666.  
  1667. CKLND1
  1668. E8F7 C6 D6          DEC CURROW
  1669. E8F9 60             RTS
  1670.  
  1671. ;====================================================================
  1672. ; CKLNPL - Check for line increment
  1673. ;
  1674. CKLNPL
  1675. E8FA A2 04          LDX #$04
  1676. E8FC A9 15          LDA #$15
  1677.  
  1678. CKLNINL
  1679. E8FE C5 D3          CMP CSRIDX
  1680. E900 F0 07          BEQ CKLNIN    ;$E909
  1681. E902 18             CLC
  1682. E903 69 16          ADC #$16
  1683. E905 CA             DEX
  1684. E906 D0 F6          BNE CKLNINL    ;$E8FE
  1685. E908 60            RTS
  1686.  
  1687. CKLNIN
  1688. E909 A6 D6          LDX CURROW
  1689. E90B E0 17          CPX #$17
  1690. E90D F0 02          BEQ CKLNEX    ;$E911
  1691. E90F E6 D6          INC CURROW
  1692.  
  1693. CKNLEX
  1694. E911 60             RTS
  1695.  
  1696. ;====================================================================
  1697. ; STCLRC - Set color code
  1698. ;
  1699. STCLRC
  1700. E912 A2 07          LDX #$07
  1701.  
  1702. STCLRL
  1703. E914 DD 21 E9       CMP COLRTB,X
  1704. E917 F0 04          BEQ SETCLR    ;$E91D
  1705. E919 CA             DEX
  1706. E91A 10 F8          BPL STCLRL    ;$E914
  1707. E91C 60             RTS
  1708.  
  1709. SETCLR
  1710. E91D BE 86 02       STX CLCODE
  1711. E920 60             RTS
  1712.  
  1713. ;  Table: Color code
  1714. COLRTB
  1715. E921 90 05 1C 9F 9C 1E 1F 9E
  1716.  
  1717.  
  1718. ;  Table: ScreenCode <==> ASCII
  1719. XLATB1
  1720. E929 EF A1 DF A6 E1 B1 E2 B2
  1721. E931 E3 B3 E4 B4 E5 B5 E6 B6
  1722. E939 E7 B7 E8 B8 E9 B9 FA BA
  1723. E941 FB BB FC BC EC BD FE BE
  1724. E949 84 BF F7 C0 F8 DB F9 DD
  1725. E951 EA DE 5E E0 5B E1 5D E2
  1726. E959 40 B0 61 B1 78 DB 79 DD
  1727. E961 66 B6 77 C0 70 F0 71 F1
  1728. E969 72 F2 73 F3 74 F4 75 F5
  1729. E971 76 F6 7D FD
  1730.  
  1731. ;====================================================================
  1732. ; SCRLSC - Scroll screen Evaluation
  1733. ;
  1734. SCRLSC
  1735. E975 A5 AC          LDA SAL
  1736. E977 48    PHA
  1737. E978 A5 AD          LDA SAL+1
  1738. E97A 48    PHA
  1739. E97B A5 AE          LDA EAL
  1740. E97D 48    PHA
  1741. E97E A5 AF          LDA EAL+1
  1742. E980 48             PHA
  1743.  
  1744. SCLPUSH
  1745. E981 A2 FF          LDX #$FF
  1746. E983 C6 D6          DEC CURROW
  1747. E985 C6 C9          DEC ICRROW
  1748. E987 C6 F2          DEC SCROWM
  1749.  
  1750. SCRLP1
  1751. E989 E8             INX
  1752. E98A 20 7E EA       JSR LINSTR
  1753. E98D E0 16          CPX #$16
  1754. E98F B0 0C          BCS $+12    ;$E99D
  1755.  
  1756. E991 BD FE ED       LDA LBSCAD+1,X    ;$EDFE,X
  1757. E994 85 AC          STA SAL
  1758. E996 B5 DA          LDA SLLTBL+1,X
  1759. E998 20 56 EA       JSR MOVELN
  1760. E99B 30 EC          BMI SCRLP1    ;$E989
  1761.  
  1762. E99D 20 8D EA       JSR CLRLIN
  1763. E9A0 A2 00          LDX #$00
  1764.  
  1765. SCRLP2
  1766. E9A2 B5 D9          LDA SLLTBL,X
  1767. E9A4 29 7F          AND #%01111111    ;$7F
  1768. E9A6 B4 DA          LDY SLLTBL+1,X
  1769. E9AB 10 02          BPL $+2    ;E9AC
  1770.  
  1771. E9AA 09 80          ORA #%10000000    ;$B0 or 80
  1772. E9AC 95 D9          STA SLLTBL,X
  1773. E9AE E8             INX
  1774. E9AF E0 16          CPX #$16
  1775. E9B1 D0 EF          BNE SCRLP2    ;$E9A2
  1776.  
  1777. E9B3 A5 EF          LDA SLLTBL+32    ;$EF
  1778. E9B5 09 80          ORA #%10000000    ;$B0 or 80
  1779. E9B7 85 EF          STA SLLTBL+32    ;$EF
  1780. E9B9 A5 D9          LDA SLLTBL
  1781. E9BB 10 C4          BPL SCLPUSH    ;$E981
  1782.  
  1783. E9BD E6 D6          INC CURROW
  1784. E9BF E6 F2          INC SCROWM
  1785. E9C1 A9 FB          LDA #$FB
  1786. E9C3 8D 20 91       STA D2ORB
  1787. E9C6 AD 21 91       LDA D2ORA
  1788. E9C9 C9 FE          CMP #$FE
  1789. E9CB 08             PHP
  1790. E9CC A9 F7          LDA #$F7
  1791. E9CE 8D 20 91       STA  D2ORB
  1792. E9D1 28             PLP
  1793. E9D2 D0 0B          BNE $+11    ;$E9DF
  1794.  
  1795. E9D4 A0 00          LDY #$00
  1796. E9D6 EA             NOP
  1797. E9D7 CA             DEX
  1798. E9D8 D0 FC          BNE $-2    ;E9D6
  1799.  
  1800. E9DA 88             DEY
  1801. E9DB D0 F9          BNE $-5    ;E9D6 
  1802.  
  1803. E9DD 84 C6          STY KEYCNT
  1804. E9DF A6 D6          LDX CURROW 
  1805. E9E1 68             PLA
  1806. E9E2 85 AF          STA EAL+1
  1807. E9E4 68             PLA
  1808. E9E5 85 AE          STA EAL
  1809. E9E7 68             PLA
  1810. E9E8 85 AD          STA SAL+1
  1811. E9EA 68             PLA
  1812. E9EB 85 AC          STA SAL
  1813. E9ED 60             RTS
  1814.  
  1815.  
  1816. ;====================================================================
  1817. ; INSSPC - Open a space on the screen
  1818. ;
  1819. INSSPC
  1820. E9EE A6 D6          LDX CURROW
  1821.  
  1822. INSSLOP
  1823. E9F0 E8             INX
  1824. E9F1 B5 D9          LDA SLLTBL,X
  1825. E9F3 10 FB          BPL INSSLOP    ; $E9F0
  1826.  
  1827. E9F5 86 F2          STX SCROWM
  1828. E9F7 E0 16          CPX #$16
  1829. E9F9 F0 0D          BEQ INSSPC1    ;$EA08
  1830. E9FB 90 0B          BCC INSSPC1
  1831.  
  1832. E9FD 20 75 E9       JSR SCRLSC
  1833. EA00 A6 F2          LDX SCROWM
  1834. EA02 CA             DEX
  1835. EA03 C6 D6          DEC CURROW
  1836. EA05 4C 0E E7       JMP CSRSK2    ;$E70E
  1837.  
  1838. INSSPC1
  1839. EA08 A5 AC          LDA SAL
  1840. EA0A 48             PHA
  1841. EA0B A5 AD          LDA SAL+1
  1842. EA0D 48             PHA
  1843. EA0E A5 AE          LDA EAL
  1844. EA10 48             PHA
  1845. EA11 A5 AF          LDA EAL+1
  1846. EA13 48             PHA
  1847. EA14 A2 17          LDX #$17
  1848.  
  1849. INSSLP2
  1850. EA16 CA             DEX
  1851. EA17 20 7E EA       JSR LINSTR
  1852. EA1A E4 F2          CPX SCROWM
  1853. EA1C 90 0E          BCC INSSPC2    ;$EA2C
  1854. EA1E F0 0C          BEQ INSSPC2    ;$EA2C
  1855.  
  1856. EA20 BD FC ED       LDA LBSCAD-1,X    ;$EDFC
  1857. EA23 85 AC          STA EAL
  1858. EA25 B5 D8          LDA INSRTO,X
  1859. EA27 20 56 EA       JSR MOVELN
  1860. EA2A 30 EA          BMI INSSLP2    ;$EA16
  1861.  
  1862. INSSPC2
  1863. EA2C 20 8D EA       JSR CLRLIN
  1864. EA2F A2 15          LDX #$15
  1865.  
  1866. INSSLP3
  1867. EA31 E4 F2          CPX SCROWM
  1868. EA33 90 0F          BCC INSEXIT    ;$EA44
  1869.  
  1870. EA35 B5 DA          LDA SLLTBL+1,X 
  1871. EA37 29 7F          AND #%01111111    ;$7F
  1872. EA39 B4 D9          LDY SLLTBL,X
  1873. EA3B 10 02          BPL INSSPC3    ;$EA3F
  1874. EA3D 09 80          ORA #%10000000    ;$80
  1875.  
  1876. INSSPC3
  1877. EA3F 95 DA          STA SLLTBL+1,X
  1878. EA41 CA             DEX
  1879. EA42 D0 ED          BNE INSSLP3    ;$EA31
  1880.  
  1881. INSEXIT
  1882. EA44 A6 F2          LDX SCROWM
  1883. EA46 20 0E E7       JSR CSRSK2
  1884. EA49 68             PLA
  1885. EA4A 85 AF          STA EAL+1
  1886. EA4C 68             PLA
  1887. EA4D 85 AE          STA EAL
  1888. EA4F 68             PLA
  1889. EA50 85 AD          STA SAL+1
  1890. EA52 68             PLA
  1891. EA53 85 AC          STA SAL
  1892. EA55 60             RTS
  1893.  
  1894. ;====================================================================
  1895. ; MOVELN - Move a screen line
  1896. ;
  1897. MOVELN
  1898. EA56 29 03          AND #%00000011    ;$03
  1899. EA58 0D 88 02       ORA HIPAGE
  1900. EA5B 85 AD          STA SAL+1
  1901. EA5D 20 6E EA       JSR COPYCL
  1902. EA60 A0 15          LDY #$15
  1903.  
  1904. MOVLOOP
  1905. EA62 B1 AC          LDA (SAL),Y
  1906. EA64 91 D1          STA (LINPTR),Y
  1907. EA66 B1 AE          LDA (EAL),Y
  1908. EA68 91 F3          STA (COLRPT),Y
  1909. EA6A 88             DEY
  1910. EA6B 10 F5          BPL MOVLOOP    ;$EA62
  1911. EA6D 60             RTS
  1912.  
  1913. ;====================================================================
  1914. ; COPYCL - Synchronize color transfer
  1915. ;
  1916. COPYCL
  1917. EA6E 20 B2 EA       JSR BLINK
  1918. EA71 A5 AC          LDA SAL
  1919. EA73 85 AE          STA EAL
  1920. EA75 A5 AD          LDA SAL+1
  1921. EA77 29 03          AND #%00000011    ;$03
  1922. EA79 09 94          ORA #%10010100    ;$94
  1923. EA7B 85 AF          STA EAL+1
  1924. EA7D 60             RTS
  1925.  
  1926. ;====================================================================
  1927. ; LINSTR - Set start of line
  1928. ;
  1929. LINSTR
  1930. EA7E BD FD ED       LDA LBSCAD,X    ;$EDFD
  1931. EA81 85 D1          STA LINPTR
  1932. EA83 B5 D9          LDA SLLTBL,X
  1933. EA85 29 03          AND #%00000011    ;$03
  1934. EA87 0D 88 02       ORA HIPAGE
  1935. EA8A 85 D2          STA LINPTR+1
  1936. EA8C 60             RTS
  1937.  
  1938. ;====================================================================
  1939. ; CLRLIN - Clear screen line
  1940. ;
  1941. CLRLIN
  1942. EA8D A0 15          LDY #$15
  1943. EA8F 20 7E EA       JSR LINSTR
  1944. EA92 20 B2 EA       JSR BLINK
  1945.  
  1946. CLEARLP
  1947. EA95 A9 20          LDA #' '    ;$20
  1948. EA97 91 D1          STA (LINPTR),Y
  1949. EA99 A9 01          LDA #$01
  1950. EA9B 91 F3          STA (COLRPT),Y
  1951. EA9D 88             DEY
  1952. EA9E 10 F5          BPL CLEARLP    ;$EA95
  1953. EAA0 60             RTS
  1954.  
  1955. ;====================================================================
  1956. ; PRNSCR - Print to screen
  1957. ;
  1958. PRNSCR
  1959. EAA1 A8             TAY
  1960. EAA2 A9 02          LDA #$02
  1961. EAA4 85 CD          STA BLNCT
  1962. EAA6 20 B2 EA       JSR BLINK
  1963. EAA9 98             TYA
  1964.  
  1965. PRNSCR1
  1966. EAAA A4 D3          LDY CSRIDX
  1967. EAAC 91 D1          STA (LINPTR),Y
  1968. EAAE 8A             TXA
  1969. EAAF 91 F3          STA (COLRPT),Y
  1970. EAB1 60             RTS
  1971.  
  1972. ;====================================================================
  1973. ; BLINK - Blink cursor
  1974. ;
  1975. BLINK
  1976. EAB2 A5 D1          LDA LINPTR
  1977. EAB4 85 F3          STA COLRPT
  1978. EAB6 A5 D2          LDA LINPTR+1
  1979. EAB8 29 03          AND #%00000011    ;$03
  1980. EABA 09 94          ORA #%10010100    ;$94
  1981. EABC 85 F4          STA COLRPT+1
  1982. EABE 60             RTS
  1983.  
  1984. ;====================================================================
  1985. ; IRQVEC - IRQ Vector
  1986. ;
  1987. IRQVEC
  1988. EABF     JSR IUDTIM    ;update clock F734
  1989. EAC2 A5 CC          LDA BLNSW
  1990. EAC4 D0 29          BNE IRQVEC2    ;$EAEF
  1991.  
  1992. EAC6 C6 CD          DEC BLNCT    ;decrement blink count
  1993. EAC8 D0 25          BNE IRQVEC2    ;$EAEF
  1994.  
  1995. EACA A9 14          LDA #$14
  1996. EACC 85 CD          STA BLNCT
  1997. EACE A4 D3          LDY CSRIDX
  1998. EAD0 46 CF          LSR BLNON
  1999. EAD2 AE 87 02       LDX CSRCLR
  2000. EAD5 B1 D1          LDA (LINPTR),Y
  2001. EAD7 B0 11          BCS IRQVEC1    ;$EAEA
  2002.  
  2003. EAD9 E6 CF          INC BLNON
  2004. EADB 85 CE          STA GDBLN
  2005. EADD 20 B2 EA       JSR BLINK
  2006. EAE0 B1 F3          LDA (COLRPT),Y
  2007. EAE2 8D 87 02       STA CSRCLR
  2008. EAE5 AE 86 02       LDX CLCODE
  2009. EAE8 A5 CE          LDA GDBLN
  2010.  
  2011. IRQVEC1
  2012. EAEA 49 60          EOR #%11000000    ;$B0 or 60
  2013. EAEC 20 AA EA       JSR PRNSCR1
  2014.  
  2015. IRQVEC2
  2016. EAEF AD 1F 91       LDA D1ORAH
  2017. EAF2 29 40          AND #%01000000    ;$40
  2018. EAF4 F0 0B          BEQ IRQVEC3    ;$EB01
  2019.  
  2020. EAF6 A0 00          LDY #$00
  2021. EAF8 84 C0          STY CAS1
  2022. EAFA AD 1C 91       LDA D1PCR
  2023. EAFD 09 02          ORA #%00000010    ;$02
  2024. EAFF D0 09          BNE IRQVEC4    ;$EB0A
  2025.  
  2026. IRQVEC3
  2027. EB01 A5 C0          LDA CAS1
  2028. EB03 D0 0D          BNE IRQVEC5    ;$EB12
  2029.  
  2030. EB05 AD 1C 91       LDA D1PCR
  2031. EB08 29 FD          AND #%11111101    ;$FD
  2032.  
  2033. IRQVEC4
  2034. EB0A 2C 1E 91       BIT D1IER
  2035. EB0D 70 03          BVS IRQVEC5    ;$EB12
  2036.  
  2037. EB0F 8D 1C 91       STA D1PCR
  2038.  
  2039. IRQVEC5
  2040. EB12 20 1E EB       JSR ISCNKY    ;Eb1E
  2041. EB15 2C 24 91       BIT D2TM1L    ;9124
  2042. EB18 68             PLA
  2043. EB19 A8             TAY
  2044. EB1A 68             PLA
  2045. EB1B AA             TAX
  2046. EB1C 68             PLA
  2047. EB1D 40             RTI
  2048.  
  2049. ;====================================================================
  2050. ; ISCNKY - Scan keyboard
  2051. ;
  2052. ISCNKY
  2053. EB1E A9 00          LDA #$00
  2054. EB20 8D 8D 02       STA SHFTFL
  2055. EB23 A0 40          LDY #$40
  2056. EB25 84 CB          STY KEYDN
  2057. EB27 8D 20 91       STA D2ORB
  2058. EB2A AE 21 91       LDX D2ORA
  2059. EB2D E0 FF          CPX #$FF
  2060. EB2F F0 5E          BEQ PROCK1A    ;$EB8F
  2061.  
  2062. EB31 A9 FE          LDA #$FE
  2063. EB33 8D 20 91       STA D2ORB
  2064. EB36 A0 00          LDY #$00
  2065. EB38 A9 5E          LDA #$5E
  2066. EB3A 85 F5          STA KEYTAB
  2067. EB3C A9 EC          LDA #$EC
  2068. EB3E 85 F6          STA KEYTAB+1
  2069.  
  2070. ISCKLP1
  2071. EB40 A2 08          LDX #$0B
  2072. EB42 AD 21 91       LDA D2ORA
  2073. EB45 CD 21 91       CMP D2ORA
  2074. EB48 D0 F6          BNE ISCKLP1    ;$EB40
  2075.  
  2076. ISCKLP2
  2077. EB4A 4A             LSR
  2078. EB4B B0 16          BCS ISCNK1+3    ;$EB63
  2079.  
  2080. EB4D 48             PHA
  2081. EB4E B1 F5          LDA (KEYTAB),Y
  2082. EB50 C9 05          CMP #$05
  2083. EB52 B0 0C          BCS ISCNK1    ;$EB60
  2084.  
  2085. EB54 C9 03          CMP #$03
  2086. EB56 F0 08          BEQ ISCNK1    ;$EB60
  2087.  
  2088. EB58 0D 8D 02       ORA SHFTFL
  2089. EB5B 8D 8D 02       STA SHFTFL
  2090. EB5E 10 02          BPL ISCNK1+2    ;$EB62
  2091.  
  2092. ISCNK1
  2093. EB60 84 CB          STY KEYDN
  2094. EB62 68             PLA
  2095. EB63 C8             INY
  2096. EB64 C0 41          CPY #$41
  2097. EB66 B0 09          BCS ISCNEXIT    ;$EB71
  2098.  
  2099. EB68 CA             DEX
  2100. EB69 D0 DF          BNE ISCKLP2    ;$EB4A
  2101.  
  2102. EB6B 38             SEC
  2103. EB6C 2E 20 91       ROL D2ORB
  2104. EB6F D0 CF          BNE ISCKLP1    ;$EB40
  2105.  
  2106. ISCNEXIT
  2107. EB71 6C 8F 02       JMP (FCEVAL)
  2108. ;
  2109. ; Process key image 
  2110. ;
  2111. PROCKY
  2112. EB74 A4 CB          LDY KEYDN
  2113. EB76 B1 F5          LDA (KEYTAB),Y
  2114. EB78 AA             TAX
  2115. EB79 C4 C5          CPY CURKEY
  2116. EB7B F0 07          BEQ PROCK1    ;$EB84
  2117.  
  2118. EB7D A0 10          LDY #$10
  2119. EB7F 8C 8C 02       STY KRPTDL
  2120. EB82 D0 36          BNE PROCK4    ;$EBBA
  2121.  
  2122. PROCK1
  2123. EB84 29 7F          AND #%01111111    ;$7F
  2124. EB86 2C 8A 02       BIT KEYRPT
  2125. EB89 30 16          BMI PROCK2    ;$EBA1
  2126. EB8B 70 49          BVS PROCK5    ;$EBD6
  2127.  
  2128. EB8D C9 7F          CMP #$7F
  2129.  
  2130. PROCK1A
  2131. EB8F F0 29          BEQ PROCK4    ;$EBBA
  2132.  
  2133. EB91 C9 14          CMP #$14
  2134. EB93 F0 0C          BEQ PROCK2    ;$EBA1
  2135.  
  2136. EB95 C9 20          CMP #$20
  2137. EB97 F0 08          BEQ PROCK2    ;$EBA1
  2138.  
  2139. EB99 C9 1D          CMP #$1D
  2140. EB9B F0 04          BEQ PROCK2    ;$EBA1
  2141.  
  2142. EB9D C9 11          CMP #$11
  2143. EB9F D0 35          BNE PROCK5    ;$EBD6
  2144.  
  2145. PROCK2
  2146. EBA1 AC 8C 02       LDY KRPTDL
  2147. EBA4 F0 05          BEQ PROCK3    ;$EBAB
  2148.  
  2149. EBA6 CE 8C 02       DEC KRPTDL
  2150. EBA9 D0 2B          BNE PROCK5    ;$EBD6
  2151.  
  2152. PROCK3
  2153. EBAB CE 8E 02       DEC LSSHFT
  2154. EBAE D0 26          BNE PROCK5    ;$EBD6
  2155.  
  2156. EBB0 A0 04          LDY #$04
  2157. EBB2 8C 8B 02       STY KRPTSP
  2158. EBB5 A4 C6          LDY KEYCNT
  2159. EBB7 88             DEY
  2160. EBB8 10 1C         BPL PROCK5    ;$EBD6
  2161.  
  2162. PROCK4
  2163. EBBA A4 CB          LDY KEYDN
  2164. EBBC 84 C5          STY CURKEY
  2165. EBBE AC 8D 02       LDY SHFTFL
  2166. EBC1 8C 8E 02       STY LSSHFT
  2167. EBC4 E0 FF          CPX #$FF
  2168. EBC6 F0 0E          BEQ PROCK5    ;$EBD6
  2169.  
  2170. EBC8 8A             TXA
  2171. EBC9 A6 C6          LDX KEYCNT
  2172. EBCB EC 89 02       CPX KBMAXL
  2173. EBCE B0 06          BCS PROCK5    ;$EBD6
  2174.  
  2175. EBD0 9D 77 02       STA KBUFFR,X
  2176. EBD3 E8             INX
  2177. EBD4 86 C6          STX KEYCNT
  2178.  
  2179. PROCK5
  2180. EBD6 A9 F7          LDA #$F7
  2181. EBD8 8D 20 91       STA D2ORB
  2182. EBDB 60             RTS
  2183.  
  2184.  
  2185. ;
  2186. ; Unknown function (no apparent access)
  2187. ;
  2188. EBDC AD 8D 02       LDA SHFTFL
  2189. EBDF C9 03          CMP #$03
  2190. EBE1 D0 2C          BNE PROCK6    ;$EC0F
  2191.  
  2192. EBE3 CD 8E 02       CMP LSSHFT
  2193. EBE6 F0 EE          BEQ PROCK5    ;$EBD6
  2194.  
  2195. EBE8 AD 91 02       LDA SHMODE
  2196. EBEB 30 56          BMI PROCKEX    ;$EC43
  2197.  
  2198. EBED .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  2199. EBF5 .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  2200. EBFD .db $ea, $ea, $ea
  2201.  
  2202. EC00 AD 05 90       LDA VRSTRT
  2203. EC03 49 02          EOR #$02
  2204. EC05 8D 05 90       STA VRSTRT
  2205.  
  2206. EC08 .db $ea, $ea, $ea, $ea
  2207.  
  2208. PROCK6
  2209. EC0C 4C 43 EC       JMP PROCKEX    ;$EC43
  2210. EC0F 0A             ASL
  2211. EC10 C9 08          CMP #$0B
  2212. EC12 90 04          BCC $+4    ;$EC1B
  2213. EC14 A9 06          LDA #$06
  2214.  
  2215. EC16 .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  2216. EC1E .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  2217. EC26 .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  2218. EC2E .db $ea, $ea, $ea, $ea, $ea, $ea, $ea, $ea
  2219. EC36 .db $ea, $ea
  2220.  
  2221. EC38 AA             TAX
  2222. EC39 BD 46 EC       LDA KDECOD,X
  2223. EC3C 85 F5          STA KEYTAB
  2224. EC3E BD 47 EC       LDA KDECOD+1,X
  2225. EC41 85 F6          STA KEYTAB+1
  2226.  
  2227. PROCKEX
  2228. EC43 4C 74 EB       JMP PROCKY
  2229.  
  2230. ;====================================================================
  2231. ; KDECOD - Pointers to keyboard decode tables
  2232. ;
  2233. KDECOD
  2234. EC46 .dw KDECD1        ;$5E, $EC Unshifted
  2235. EC48 .dw KDECD2        ;$9F, $EC Shifted
  2236. EC4A .dw KDECD3        ;$E0, $EC Commodore
  2237. EC4C .dw KDECD5        ;$A3, $ED Control
  2238. EC4E .dw KDECD1        ;$EC5E Unshifted
  2239. EC50 .dw KDECD2        ;$EC9F Shifted
  2240. EC52 .dw KDECD4        ;$69, $ED Decode
  2241. EC54 .dw KDECD5        ;$EDA3 Control
  2242. EC56 .dw GRTXTF        ;$21, $ED Graphics/text control
  2243. EC58 .dw KDECD4        ;$ED69 Decode
  2244. EC5A .dw KDECD4        ;$ED69 Decode
  2245. EC5C .dw KDECD5        ;$EDA3 Control
  2246. ;
  2247. ;Unshifted
  2248. ;
  2249. KDECD1
  2250. EC5E 31 33 35 37 39 2B
  2251. EC64 5C 14 5F 57 52 59 49 50
  2252. EC6C 2A 0D 04 41 44 47 4A 4C
  2253. EC74 3B 1D 03 01 58 56 4E 2C
  2254. EC7C 2F 11 20 5A 43 42 4D 2E
  2255. EC84 01 85 02 53 46 4B 4B 3A
  2256. EC8C 3D 86 51 45 54 55 4F 40
  2257. EC94 5E 87 32 34 36 38 30 2D
  2258. EC9C 13 88 FF
  2259. ;
  2260. ;shifted
  2261. ;
  2262. KDECD2
  2263. EC9F 21 23 25 27 29
  2264. ECA4 DB A9 94 5F D7 D2 D9 C9
  2265. ECAC D0 C0 8D 04 C1 C4 C7 CA
  2266. ECB4 CC 5D 9D 83 01 D8 D6 CE
  2267. ECBC 3C 3F 91 A0 DA C3 C2 CD
  2268. ECC4 3E 01 89 02 D3 C6 C8 CB
  2269. ECCC 5B 3D 8A D1 C5 D4 D5 CF
  2270. ECD4 BA DE 8B 22 24 26 28 30
  2271. ECDC DD 93 8C FF 
  2272. ;
  2273. ;Commodore
  2274. ;
  2275. KDECD3
  2276. ECE0 21 23 25 27
  2277. ECE4 29 A6 A8 94 5F B3 B2 B7
  2278. ECEC A2 AF DF 8D 04 B0 AC A5
  2279. ECF4 B5 B6 5D 9D 83 01 BD BE
  2280. ECFC AA 3C 3F 91 A0 AD BC BF
  2281. ED04 A7 3E 01 89 02 AE BB B4
  2282. ED0C A1 5B 3D 8A AB B1 A3 B8
  2283. ED14 B9 A4 DE 8B 22 24 26 28
  2284. ED1C 30 DC 93 8C FF
  2285. ;
  2286. ;Graphics/tect control code
  2287. ;@$ed21
  2288. GRTXTF
  2289.     cmp #$0e
  2290.     bne $+9    ;G1    ;+09
  2291.  
  2292.     lda #$02
  2293.     ora VRSTRT
  2294.     sta VRSTRT
  2295.     jmp CMD42A
  2296.  
  2297. G1        ;$ED30
  2298.     cmp #$be
  2299.     bne G2
  2300.  
  2301.     lda #$fd
  2302.     and VRSTRT
  2303.     sta VRSTRT
  2304.     jmp CMD42A
  2305.  
  2306. G2        ;$ED3F
  2307.     cmp #$08
  2308.     bne G3
  2309.     lda #$80
  2310.     ora SHMODE
  2311.     sta SHMODE
  2312.     bmi $-16    ;$-ef
  2313.  
  2314. G3        ;$ED4D
  2315.     cmp #$09
  2316.     bne $+235    ;EE3D        ;$+eb
  2317.  
  2318.     lda #$7f
  2319.     and SHMODE
  2320.     sta SHMODE
  2321.     bpl $+225    ;ed6b        ;$+e1
  2322.  
  2323.     inx
  2324.     lda SLLTBL,x
  2325.     ora #$80
  2326.     sta SLLTBL,x
  2327.     dex
  2328.     lda LINLEN
  2329.     clc
  2330.     jmp CSRMIN    ;$e715
  2331.  
  2332. ;ED21 C9 0E D0
  2333. ;ED24 0B A9 02 0D 05 90 8D 05
  2334. ;ED2C 90 4C DC E6 C9 BE D0 0B
  2335. ;ED34 A9 FD 2D 05 90 8D 05 90
  2336. ;ED3C 4C DC E6 C9 08 D0 0A A9
  2337. ;ED44 80 0D 91 02 8D 91 02 30
  2338. ;ED4C EF C9 09 D0 EB A9 7F 2D
  2339. ;ED54 91 02 8D 91 02 10 E1 E8
  2340. ;ED5C B5 D9 09 80 95 D9 CA A5
  2341. ;ED64 D5 18 4C 15 E7 
  2342. ;
  2343. ;Keyboard decoding table - Shifted
  2344. ;
  2345. KDECD4
  2346. ED69 FF FF FF
  2347. ED6C FF FF FF FF FF FF 04 FF
  2348. ED74 FF FF FF FF E2 9D 83 01
  2349. ED7C FF FF FF FF FF 91 A0 FF
  2350. ED84 FF FF FF EE 01 89 02 FF
  2351. ED8C FF FF FF E1 FD 8A FF FF
  2352. ED94 FF FF FF B0 E0 BE F2 F4
  2353. ED9C F6 FF F0 ED 93 8C FF 
  2354. ;
  2355. ;Keyboard decoding table - control
  2356. ;
  2357. KDECD5
  2358. EDA3 90
  2359. EDA4 1C 9C 1F 12 FF FF FF 06
  2360. EDAC FF 12 FF FF FF FF FF FF
  2361. EDB4 FF FF FF FF FF FF FF FF
  2362. EDBC FF FF FF FF FF FF FF FF
  2363. EDC4 FF FF FF FF FF FF FF FF
  2364. EDCC FF FF FF FF FF FF FF FF
  2365. EDD4 FF FF FF FF FF FF FF FF
  2366. EDDC FF FF 05 9F 1E 9E 92 FF
  2367. ;
  2368. ;VIC chip setup table
  2369. ;
  2370. VICSUP
  2371. EDE4 .db $05, $19, $16, $2E, $00, $C0, $00, $00
  2372. EDEC .db $00, $00, $00, $00, $00, $00, $00, $1B
  2373. ;
  2374. ;Shift-run equivalent
  2375. ;
  2376. RUNSHF
  2377. EDF4 .db $4C, $4F, $41, $44, $0D, $52, $55, $4E
  2378. EDFC .db $0D 
  2379. ;
  2380. ;Low-byte screen address
  2381. ;
  2382. LBSCAD
  2383. EDFD .db $00, $16, $2C, $42, $58, $6E, $84
  2384. EE04 .db $9A, $B0, $C6, $DC, $F2, $08, $1E, $34
  2385. EE0C .db $4A, $60, $76, $8C, $A2, $BB, $CE, $E4
  2386.  
  2387.  
  2388. ;====================================================================
  2389. ; ITALK - Send TALK command on serial bus (internal)
  2390. ;
  2391. ITALK
  2392. EE14 09 40          ORA #%01000000    ;$40
  2393.  
  2394. ;====================================================================
  2395. ; ILISTN - Send LISTEN command on serial bus (internal)
  2396. ;
  2397. ILISTN
  2398. EE16 09 20          ORA #%00100000    ;$20
  2399. EE19 20 60 F1       JSR SBIDLE    ;test IER for bus idle
  2400. EE1C 48             PHA
  2401. EE1D 24 94          BIT C3PO
  2402. EE1F 10 0A          BPL LISN1    ;$EE2B
  2403.  
  2404. EE21 38             SEC
  2405. EE22 66 A3          ROR SBITCF
  2406. EE24 20 49 EE       JSR OTDSBU
  2407. EE27 46 94          LSR C3PO
  2408. EE29 46 A3          LSR SBITCF
  2409.  
  2410. LISN1
  2411. EE2B 68             PLA
  2412. EE2C 85 95          STA BSOUT
  2413. EE2E 20 A0 E4       JSR SOUT1    ;send DATA=1
  2414. EE31 C9 3F          CMP #%00111111    ;$3F
  2415. EE33 D0 03          BNE LISN2    ;$EE38
  2416.  
  2417. EE35 20 84 EF       JSR SCLK1    ;tsend SCLK=1
  2418.  
  2419. LISN2
  2420. EE38 AD 1F 91       LDA D1ORAH
  2421. EE3B 09 80          ORA #%10110000    ;$B0
  2422. EE3D 8D 1F 91       STA D1ORAH
  2423.  
  2424. ILISTEX
  2425. EE40 20 8D EF       JSR SCLK0    ;send SCLK=0
  2426. EE43 20 A0 E4       JSR SOUT1    ;send DATA=1
  2427. EE46 20 96 EF       JSR DELAY    ;wait
  2428.  
  2429.  
  2430. ;====================================================================
  2431. ; OTDSBU- Send data on serial bus
  2432. ;
  2433. OTDSBU
  2434. EE49 78             SEI
  2435. EE4A 20 A0 E4       JSR SOUT1
  2436. EE4D 20 B2 E4       JSR SDCLK
  2437. EE50 4A             LSR
  2438. EE51 B0 61          BCS FLGERR
  2439.  
  2440. EE53 20 84 EF       JSR SCLK1
  2441. EE56 24 A3          BIT SBITCF
  2442. EE58 10 0C          BPL OTDLP3    ;$EE66
  2443.  
  2444. OTDLP1
  2445. EE5A 20 B2 E4       JSR SDCLK
  2446. EE5D 4A             LSR
  2447. EE5E 90 FA          BCC OTDLP1    ;$EE5A
  2448.  
  2449. OTDLP2
  2450. EE60 20 B2 E4       JSR SDCLK
  2451. EE63 4A             LSR
  2452. EE64 B0 FA          BCS OTDLP2    ;$EE60
  2453.  
  2454. OTDLP3
  2455. EE66 20 B2 E4       JSR SDCLK
  2456. EE69 4A             LSR
  2457. EE6A 90 FA          BCC OTDLP3    ;$EE66
  2458.  
  2459. EE6C 20 8D EF       JSR SCLK0
  2460. EE6F A9 08          LDA #$08
  2461. EE71 85 A5          STA CNTDN
  2462.  
  2463. OTDLP4
  2464. EE73 AD 1F 91       LDA D1ORAH
  2465. EE76 CD 1F 91       CMP D1ORAH
  2466. EE79 D0 F8          BNE OTDLP4    ;$EE73
  2467.  
  2468. EE7B 4A             LSR
  2469. EE7C 4A             LSR
  2470. EE7D 90 38          BCC FLGER03    ;$EEB7
  2471.  
  2472. EE7F 66 95          ROR BSOUT
  2473. EE81 B0 05          BCS OTDSB1    ;$EE8B
  2474.  
  2475. EE83 20 A9 E4       JSR SOUT0
  2476. EE86 D0 03          BNE OTDSB1    ;$EE8B
  2477.  
  2478. EE88 20 A0  E4      JSR SOUT1
  2479.  
  2480. OTDSB1
  2481. EE8B 20 84  EF      JSR SCLK1
  2482.  
  2483. EE8E .db $EA, $EA, $EA, $EA
  2484.  
  2485. EE92 AD 2C 91       LDA D2PCR
  2486. EE95 29 DF          AND #%11011111    ;$DF
  2487. EE97 09 02          ORA #%00000010    ;$02
  2488. EE99 8D 2C 91       STA D2PCR
  2489. EE9C C6 A5          DEC CNTDN
  2490. EE9E D0 D3          BNE OTDLP4    ;$EE73
  2491.  
  2492. EEA0 A9 04          LDA #$04
  2493. EEA2 8D 29 91       STA D2TM2H
  2494.  
  2495. OTDLP5
  2496. EEA5 AD 2D 91       LDA D2IFR
  2497. EEA8 29 20          AND #%00100000    ;$20
  2498. EEAA D0 0B          BNE FLGER03    ;$EEB7
  2499.  
  2500. EEAC 20 B2 E4       JSR SDCLK
  2501. EEAF 4A             LSR
  2502. EEB0 B0 F3          BCS OTDLP5    ;$EEA5
  2503. EEB2 58             CLI
  2504. EEB3 60             RTS
  2505.  
  2506. ;====================================================================
  2507. ; FLGERR - Flag errors
  2508. ;
  2509. FLGERR
  2510. EEB4 A9 80          LDA #$80    ; Error $80 - device not present
  2511. EEB6 2C    .db $2C
  2512.  
  2513. FLGER03
  2514. EEB7 A9 03       LDA #$03    ; Error $03 - write timeout
  2515. EEB9 20 6A FE       JSR ISETMS1    ;$FE6A External entry into ISETMS
  2516. EEBC 58             CLI
  2517. EEBD 18             CLC
  2518. EEBE 90 49          BCC IUNLSN+5    ;$EF09
  2519.  
  2520.  
  2521. ;====================================================================
  2522. ; ISECND - Send LISTEN secondary address (internal)
  2523. ;
  2524. ISECND
  2525. EEC0 85 95          STA BSOUT
  2526. EEC2 20 40 EE       JSR ILISTEX    ;$EE40 external entry into ILISTN
  2527.         ;CLK=0, DATA=1, pause
  2528. ;
  2529. ; CLRATN - Clear the ATN line
  2530. ;
  2531. CLRATN
  2532. EEC5 AD 1F 91       LDA D1ORAH    ; release ATN
  2533. EEC8 29 7F          AND #%01111111    ;$7F
  2534. EECA 8D 1F 91       STA D1ORAH
  2535. EECD 60             RTS
  2536.  
  2537. ;====================================================================
  2538. ; ITKSA - Sent TALK secondary address (internal)
  2539. ;
  2540. ITKSA
  2541. EECE 65 95          STA BSOUT     
  2542. EED0 20 40 EE       JSR ILISTEX    ;$EE40 external entry into ILISTN
  2543.         ;CLK=0, DATA=1, pause
  2544. ;
  2545. ; Wait for CLK
  2546. ;
  2547. CLKWAIT
  2548. EED3 78             SEI
  2549. EED4 20 A9 E4       JSR SOUT0
  2550. EED7 20 C5 EE       JSR CLRATN
  2551. EEDA 20 84 EF       JSR SCLK1
  2552.  
  2553. CLKWAIT
  2554. EEDD 20 B2 E4       JSR SDCLK
  2555. EEE0 B0 FB          BCS CLKWAIT    ;$EEDD
  2556. EEE2 58             CLI
  2557. EEE3 60             RTS
  2558.  
  2559.  
  2560. ;====================================================================
  2561. ; ICIOUT - Send serial deferred (internal)
  2562. ;
  2563. ICIOUT
  2564. EEE4 24 94          BIT C3PO       
  2565. EEE6 30 05          BMI ICIOUT1    ;$EEED
  2566. EEE8 38             SEC
  2567. EEE9 66 94          ROR C3PO
  2568. EEEB D0 05          BNE ICIOUT2    ;$EEF2
  2569.  
  2570. ICIOUT1
  2571. EEED 48             PHA
  2572. EEEE 20 49 EE       JSR OTDSBU
  2573. EEF1 68             PLA
  2574.  
  2575. ICIOUT2
  2576. EEF2 85 95          STA BSOUT
  2577. EEF4 18             CLC
  2578. EEF5 60             RTS
  2579.  
  2580.  
  2581. ;====================================================================
  2582. ; IUNTLK - Send UNTALK on serial bus (internal)
  2583. ;
  2584. IUNTLK
  2585. EEF6 20 8D EF       JSR SCLK0
  2586. EEF7 AD 1F 91       LDA D1ORAH
  2587. EEF9 AD 1F 91       LDA D1ORAH
  2588. EEFC 09 80          ORA #%10110000    ;$B0
  2589. EEFE 8D 1F 91       STA D1ORAH
  2590.  
  2591. EF01 A9 5F          LDA #$5F    ;entry 1
  2592. EF03 2C     .db $2C    ;really BIT $3FA9 to skip EF04
  2593.  
  2594. ;====================================================================
  2595. ; IUNLSN - Send UNLISTEN on serial bus (internal)
  2596. ;
  2597. IUNLSN
  2598. EF04 A9 3F          LDA #$3F    ;entry 2
  2599. EF06 20 1C EE       JSR ILISTN+5    ;$EE1C skip serial idle test
  2600. EF09 20 C5 EE       JSR CLRATN
  2601. EF0C 8A             TXA
  2602. EF0D A2 0B          LDX #$0B
  2603.  
  2604. IUNLP1
  2605. EF0F CA             DEX
  2606. EF10 D0 FD          BNE IUNLP1    ;$EF0F
  2607. EF12 AA             TAX
  2608. EF13 20 84 EF       JSR SCLK1
  2609. EF16 4C A0 E4       JMP SOUT1
  2610.  
  2611. ;====================================================================
  2612. ; IACPTR - Receive from serial bus (internal)
  2613. ;
  2614. IACPTR
  2615. EF19 78             SEI           
  2616. EF1A A9 00          LDA #$00
  2617. EF1C 85 A5          STA CNTDN
  2618. EF1E 20 84 EF       JSR SCLK1
  2619.  
  2620. IACPLP1
  2621. EF21 20 B2 E4       JSR SDCLK
  2622. EF24 90 FB          BCC IACPLP1    ;$EF21
  2623.  
  2624. EF26 20 A0 E4       JSR SOUT1
  2625.  
  2626. IACPTR1
  2627. EF29 A9 01          LDA #$01
  2628. EF2B 8D 29 91       STA D2TM2H
  2629.  
  2630. IACPLP2
  2631. EF2E AD 2D 91       LDA D2IFR
  2632. EF31 29 20          AND #%00100000    ;$20
  2633. EF33 D0 07          BNE IACPTR2    ;$EF3C
  2634.  
  2635. EF35 20 B2 E4       JSR SDCLK
  2636. EF38 B0 F4          BCS IACPLP2    ;$EF2E
  2637. EF3A 90 18          BCC IACPTR3A    ;$EF54
  2638.  
  2639. IACPTR2
  2640. EF3C A5 A5          LDA CNTDN
  2641. EF3E F0 05          BEQ IACPTR3    ;$EF45
  2642.  
  2643. EF40 A9 02          LDA #$02    ;set eerror code to 2
  2644. EF42 4C B9 EE       JMP FLGER03+2    ;$EEB9 
  2645.  
  2646. IACPTR3
  2647. EF45 20 A9 E4       JSR SOUT0
  2648. EF48 20 0C EF       JSR IUNLSN+8    ;$EF0C
  2649. EF4B A9 40          LDA #$40
  2650. EF4D 20 6A FE       JSR ISETMS+4    ;$FE6A
  2651. EF50 E6 A5          INC CNTDN
  2652. EF52 D0 D5          BNE IACPTR1    ;$EF29
  2653.  
  2654. IACPTR3A
  2655. EF54 A9 08          LDA #$0B
  2656.  
  2657. IACPLP3
  2658. EF56 85 A5          STA CNTDN
  2659.  
  2660. IACPLP4
  2661. EF58 AD 1F 91       LDA D1ORAH
  2662. EF5B CD 1F 91       CMP D1ORAH
  2663. EF5E D0 F8          BNE IACPLP3    ;$EF56
  2664.  
  2665. EF60 4A             LSR
  2666. EF61 90 F5          BCC IACPLP4    ;$EF58
  2667.  
  2668. EF63 4A             LSR
  2669. EF64 66 A4          ROR CYCLE
  2670.  
  2671. IACPLP5
  2672. EF66 AD 1F 91       LDA D1ORAH
  2673. EF69 CD 1F 91       CMP D1ORAH
  2674. EF6C D0 F8          BNE IACPLP5    ;$EF66
  2675.  
  2676. EF6E 4A             LSR
  2677. EF6F B0 F5          BCS IACPLP5    ;$EF66
  2678.  
  2679. EF71 C6 A5          DEC CNTDN
  2680. EF73 D0 E3          BNE IACPLP4    ;$EF58
  2681.  
  2682. EF75 20 A9 E4       JSR SOUT0
  2683. EF78 A5 90          LDA CSTAT
  2684. EF7A F0 03          BEQ IACPEX    ;$EF7F
  2685.  
  2686. EF7C 20 0C EF       JSR IUNLSN+8
  2687.  
  2688. IACPEX
  2689. EF7F A5 A4          LDA CYCLE
  2690. EF81 58             CLI
  2691. EF82 18             CLC
  2692. EF83 60             RTS
  2693.  
  2694.  
  2695. ;====================================================================
  2696. ; SCLK1 - Set Serial CLK "1" (inverted logic)
  2697. ;
  2698. SCLK1
  2699. EF84 AD 2C 91       LDA D2PCR
  2700. EF87 29 FD          AND #%11111101    ;$FD
  2701. EF89 8D 2C 91       STA D2PCR
  2702. EF8C 60             RTS
  2703.  
  2704.  
  2705. ;====================================================================
  2706. ; SCLK0 - Set Serial CLK "0"
  2707. ;
  2708. SCLK0
  2709. EF8D AD 2C 91       LDA D2PCR
  2710. EF90 09 02          ORA #%00000010    ;$02
  2711. EF92 8D 2C 91       STA D2PCR
  2712. EF95 60             RTS
  2713.  
  2714. ;====================================================================
  2715. ; DELAY - Delay 1ms
  2716. ;
  2717. DELAY
  2718. EF96 A9 04          LDA #$04
  2719. EF98 8D 29 91       STA D2TM2H
  2720.  
  2721. DLYLOOP
  2722. EF9B AD 2D 91       LDA D2IFR
  2723. EF9E 29 20          AND #%00100000    ;$20
  2724. EFA0 F0 F9          BEQ DLYLOOP    ;$EF9B
  2725. EFA2 60             RTS
  2726.  
  2727.  
  2728. ;====================================================================
  2729. ; SSEND - RS-232 Send
  2730. ;
  2731. SSEND
  2732. EFA3 A5 B4          LDA BITTS
  2733. EFA5 F0 47          BEQ SSNDN
  2734. EFA7 30 3F          BMI SSEND1    ;$EFE8
  2735.  
  2736. EFA9 46 B6          LSR RODATA
  2737. EFAB A2 00          LDX #$00
  2738. EFAD 90 01          BCC SSEND2    ;$EFB0
  2739.  
  2740. EFAF CA             DEX
  2741.  
  2742. SSEND2
  2743. EFB0 8A             TXA
  2744. EFB1 45 BD          EOR ROPRTY
  2745. EFB3 85 BD          STA ROPRTY
  2746. EFB5 C6 B4          DEC BITTS
  2747. EFB7 F0 06          BEQ SSEND3    ;$EFBF
  2748.  
  2749. SSEND2A
  2750. EFB9 8A             TXA
  2751. EFBA 29 20          AND #%00100000    ;$20
  2752. EFBC 85 B5          STA NXTBIT
  2753. EFBE 60             RTS
  2754.  
  2755. SSEND3
  2756. EFBF A9 20          LDA #$20
  2757. EFC1 2C 94 02       BIT M51CDR
  2758. EFC4 F0 14          BEQ SSEND5    ;$EFDA
  2759. EFC6 30 1C          BMI SSEND7    ;$EFE4
  2760. EFC8 70 14          BVS SSEND6    ;$EFDE
  2761.  
  2762. EFCA A5 BD          LDA ROPRTY
  2763. EFCC D0 01          BNE SSEND4A    ;$EFCF
  2764.  
  2765. SSEND4
  2766. EFCE CA             DEX
  2767.  
  2768. SSEND4A
  2769. EFCF C6 B4          DEC BITTS
  2770. EFD1 AD 93 02       LDA M51CTR
  2771. EFD4 10 E3          BPL SSEND2A    ;$EFB9
  2772.  
  2773. EFD6 C6 B4          DEC BITTS
  2774. EFD8 D0 DF          BNE SSEND2A    ;$EFB9
  2775.  
  2776. SSEND5
  2777. EFDA E6 B4          INC BITTS
  2778. EFDC D0 F0          BNE SSEND4    ;$EFCE
  2779.  
  2780. SSEND6
  2781. EFDE A5 BD          LDA ROPRTY
  2782. EFE0 F0 ED          BEQ SSEND4A    ;$EFCF
  2783. EFE2 D0 EA          BNE SSEND4    ;$EFCE
  2784.  
  2785. SSEND7
  2786. EFE4 70 E9          BVS SSEND4A    ;$EFCF
  2787. EFE6 50 E6          BVC SSEND4    ;$EFCE
  2788.  
  2789. SSEND1
  2790. EFE8 E6 B4          INC BITTS
  2791. EFEA A2 FF          LDX #$FF
  2792. EFEC D0 CB          BNE SSEND2A    ;$EFB9
  2793.  
  2794.  
  2795. ;====================================================================
  2796. ; SSNDN - Send new RS-232 byte
  2797. ;
  2798. SSNDN
  2799. EFEE AD 94 02      LDA M51CDR
  2800. EFF1 4A             LSR
  2801. EFF2 90 07          BCC SSNDN1    ;$EFFB
  2802.  
  2803. EFF4 2C 20 91       BIT D2ORB
  2804. EFF7 10 1D          BPL DSRERR
  2805. EFF9 50 1E          BVC CTSERR
  2806.  
  2807. SSNDN1
  2808. EFFB A9 00          LDA #$00
  2809. EFFD 85 BD          STA ROPRTY
  2810. EFFF 85 B5          STA NXTBIT
  2811. F001 AE 98 02       LDX BITNUM
  2812. F004 86 B4          STX BITTS
  2813. F006 AC 9D 02       LDY RODBS
  2814. F009 CC 9E 02       CPY RODBE
  2815. F00C F0 13          BEQ DISTIM
  2816.  
  2817. F00E B1 F9          LDA (ROBUF),Y
  2818. F010 85 B6          STA RODATA
  2819. F012 EE 9D 02       INC RODBS
  2820. F015 60             RTS
  2821.  
  2822. ;====================================================================
  2823. ; DSRERR - "No DSR"/"CTS" errors
  2824. ;
  2825. DSRERR
  2826. F016 A9 40    LDA #$40    ; no DSR
  2827. F018 2C       .db $2C    ;bit $10a9
  2828. ;
  2829. ; CTSERR - CTS Error
  2830. ;
  2831. CTSERR
  2832. F019 A9 10    LDA #$10    ; no CTS
  2833. F01B 0D 97 02       ORA RSSTAT
  2834. F01E 8D 97 02       STA RSSTAT
  2835. ;
  2836. ; DISTIM - Disable timer
  2837. ;
  2838. DISTIM
  2839. F021 A9 40          LDA #$40    ; disable timer
  2840. F023 8D 1E 91       STA D1IER
  2841. F026 60             RTS
  2842.  
  2843.  
  2844. ;====================================================================
  2845. ; BITCNT - Compute bit count
  2846. ;
  2847. BITCNT
  2848. F027 A2 09         LDX #$09
  2849. F029 A9 20          LDA #$20
  2850. F02B 2C 93 02       BIT M51CTR
  2851. F02E F0 01          BEQ $+1    ;$F031
  2852.  
  2853. F030 CA             DEX
  2854. F031 50 02          BVC BITEXIT    ;$F035
  2855. F033 CA             DEX
  2856. F034 CA             DEX
  2857.  
  2858. BITEXIT
  2859. F035 60             RTS
  2860.  
  2861.  
  2862. ;====================================================================
  2863. ; SERRX - RS-232 Receive
  2864. ;
  2865. SERRX
  2866. F036 A6 A9          LDX RINONE
  2867. F038 D0 2E          BNE PROCSB
  2868.  
  2869. F03A C6 A8          DEC TPRWRE
  2870. F03C F0 31          BEQ PROCSB1    ;$F06F
  2871. F03E 30 0D          BMI SERRX1    ;$F04D
  2872.  
  2873. F040 A5 A7          LDA INBIT
  2874. F042 45 AB          EOR RIPRTY
  2875. F044 85 AB          STA RIPRTY
  2876. F046 46 A7          LSR INBIT
  2877. F048 66 AA          ROR RIDATA
  2878.  
  2879. SERRXEX
  2880. F04A 60             RTS
  2881.  
  2882. F04B C6 A8          DEC TPRWRE
  2883.  
  2884. SERRX1
  2885. F04D A5 A7          LDA INBIT
  2886. F04F F0 62          BEQ PRSBEX    ;$F0B3
  2887. F051 AD 93 02       LDA M51CTR
  2888. F054 0A             ASL
  2889. F055 A9 01          LDA #$01
  2890. F057 65 A8          ADC TPRWRE
  2891. F059 D0 EF          BNE SERRXEX    ;$F04A
  2892. ;
  2893. ; RXSET - Setup to receive
  2894. ;
  2895. RXSET
  2896. F05B A9 90          LDA #$90
  2897. F05D 8D 1E 91       STA D1IER
  2898. F060 85 A9          STA RINONE
  2899. F062 A9 20          LDA #$20
  2900. F064 8D 1E 91       STA D1IER
  2901. F067 60             RTS
  2902.  
  2903.  
  2904. ;====================================================================
  2905. ; PROCSB - Process RS-232 byte
  2906. ;
  2907. PROCSB
  2908. F068 A5 A7          LDA INBIT
  2909. F06A D0 EF          BNE RXSET
  2910. F06C 85 A9          STA RINONE
  2911. F06E 60             RTS
  2912.  
  2913. F06F AC 9B 02       LDY RIDBE
  2914. F072 C8             INY
  2915. F073 CC 9C 02       CPY RIDBSR
  2916. F076 F0 2A          BEQ SBE04    ;$F0A2
  2917.  
  2918. F078 8C 9B 02       STY RIDBE
  2919. F07B 88             DEY
  2920. F07C A5 AA          LDA RIDATA
  2921. F07E AE 98 02       LDX BITNUM
  2922.  
  2923. PRSBLP1
  2924. F081 E0 09          CPX #$09
  2925. F083 F0 04          BEQ PROCSB2    ;$F089
  2926.  
  2927. F085 4A             LSR
  2928. F086 E8             INX
  2929. F087 D0 F8          BNE PRSBLP1    ;$F081
  2930.  
  2931. PROCSB2
  2932. F089 91 F7          STA (RIBUF),Y
  2933. F08B A9 20          LDA #$20
  2934. F08D 2C 94 02       BIT M51CDR
  2935. F090 F0 B9          BEQ SERRX1-2    ;$F04B
  2936. F092 30 B6          BMI SERRX1-3    ;$F04A RTS
  2937.  
  2938. F094 A5 A7          LDA INBIT
  2939. F096 45 AB          EOR RIPRTY
  2940. F098 F0 03          BEQ $+3    ;$F09D
  2941. F09A 70 AE          BVS SERRX1-3    ;$F04A
  2942.  
  2943. F09C 2C     .db $2C
  2944. F09D 50 AB       BVC SINPEX2    ;BIT $A850 = BVC+A8
  2945.  
  2946. SBE01
  2947. F09F A9 01          LDA #$01
  2948. F0A1 2C     .db $2C
  2949.  
  2950. SBE04
  2951. F0A2 A9 04       LDA #$04    ;BIT $04A9
  2952. F0A4 2C    .db $2C
  2953.  
  2954. SBE80
  2955. F0A5 A9 80       LDA #$80    ;BIT $80A9
  2956. F0A7 2C     .db $2C
  2957.  
  2958. SBE02
  2959. F0A8 A9 02       LDA #$02    ;BIT $02A9
  2960. F0AA 0D 97 02       ORA RSSTAT
  2961. F0AD 8D 97 02       STA RSSTAT
  2962. F0B0 4C 5B F0       JMP RXSET
  2963.  
  2964. PRSBEX
  2965. F0B3 A5 AA          LDA RIDATA
  2966. F0B5 D0 F1          BNE SBE02    ;$F0A8
  2967. F0B7 F0 EC          BEQ SBE80    ;$F0A5
  2968. F0B9 4C 96 F7       JMP IOERMS9    ;$F796
  2969.  
  2970.  
  2971. ;====================================================================
  2972. ; SSUBBT - Submit to RS-232
  2973. ;
  2974. SSUBBT
  2975. F0BC 85 9A          STA OUTDEV
  2976. F0BE AD 94 02       LDA M51CDR
  2977. F0C1 4A             LSR
  2978. F0C2 90 27          BCC SSRETC    ;$F0EB return OK
  2979.  
  2980. F0C4 A9 02          LDA #$02
  2981. F0C6 2C 10 91       BIT D1OUTB
  2982. F0C9 10 1D          BPL SSRETE    ;$F0E8 return DSR error
  2983. F0CB D0 1E          BNE SSRETC    ;$F0EB
  2984.  
  2985. SSLOOP1
  2986. F0CD AD 1E 91       LDA D1IER
  2987. F0D0 29 30          AND #%00110000    ;$30
  2988. F0D2 D0 F9          BNE SSLOOP1    ;$F0CD
  2989.  
  2990. SSLOOP2
  2991. F0D4 2C 10 91       BIT D1OUTB
  2992. F0D7 70 FB          BVS SSLOOP2    ;$F0D4
  2993.  
  2994. F0D9 AD 10 91       LDA D1OUTB
  2995. F0DC 09 02          ORA #$02
  2996. F0DE 8D 10 91       STA D1OUTB
  2997.  
  2998. SSLOOP3
  2999. F0E1 2C 10 91       BIT D1OUTB
  3000. F0E4 70 05          BVS SSRETC    ;$F0EB
  3001. F0E6 30 F9          BMI SSLOOP3    ;$F0E1
  3002.  
  3003. SSRETE
  3004. F0E8 20 16 F0       JSR DSRERR    ;set DSR error
  3005.  
  3006. SSRETC
  3007. F0EB 18             CLC
  3008. F0EC 60             RTS
  3009.  
  3010.  
  3011. ;====================================================================
  3012. ; SSENDB - Send to RS-232 buffer
  3013. ;
  3014. SSENDB
  3015. F0ED AC 9E 02       LDY RODBE
  3016. F0F0 C8             INY
  3017. F0F1 CC 9D 02       CPY RODBS
  3018. F0F4 F0 F7          BEQ SSENDB
  3019.  
  3020. F0F6 8C 9E 02       STY RODBE
  3021. F0F9 88             DEY
  3022. F0FA 91 F9          STA (ROBUF),Y
  3023. F0FC 2C 1E 91       BIT D1IER
  3024. F0FF 50 01          BVC SNDB1    ;$F102
  3025.  
  3026. F101 60            RTS
  3027.  
  3028. SNDB1
  3029. F102 AD 99 02       LDA BAUDOF
  3030. F105 8D 14 91       STA D1TM1L
  3031. F108 AD 9A 02       LDA BAUDOF+1
  3032. F10B 8D 15 91       STA D1TM1L+1
  3033. F10E A9 C0          LDA #%11000000    ;$C0
  3034. F110 8D 1E 91       STA D1IER
  3035. F113 4C EE EF       JMP SSNDN
  3036.  
  3037.  
  3038. ;====================================================================
  3039. ; SERINP - Input from RS-232
  3040. ;
  3041. SERINP
  3042. F116 85 99          STA INDEV
  3043. F118 AD 94 02       LDA M51CDR
  3044. F11B 4A             LSR
  3045. F11C 90 28          BCC SINPEX2    ;$F146
  3046.  
  3047. F11E 29 08          AND #%00001000    ;$08
  3048. F120 F0 24          BEQ SINPEX2    ;$F146
  3049.  
  3050. F122 A9 02          LDA #$02
  3051. F124 2C 10 91       BIT D1OUTB
  3052. F127 10 BF          BPL SSRETE    ;$F0E8 DSR error
  3053. F129 F0 19          BEQ SINRETC    ;$F144
  3054.  
  3055. SINPLP1
  3056. F12B 2C 1E 91       BIT D1IER
  3057. F12E 70 FB          BVS SINPLP1    ;$F12B
  3058.  
  3059. F130 AD 10 91       LDA D1OUTB
  3060. F133 29 FD          AND #%11111101    ;$FD
  3061. F135 8D 10 91       STA D1OUTB
  3062.  
  3063. SINLP2
  3064. F138 AD 10 91       LDA D1OUTB
  3065. F13B 29 04          AND #%00000100    ;$04
  3066. F13D F0 F9          BEQ SINLP2    ;$F138
  3067.  
  3068. SINPEX1
  3069. F13F A9 90          LDA #%10010000    ;$90
  3070. F141 8D 1E 91       STA D1IER
  3071.  
  3072. SINRETC
  3073. F144 18             CLC
  3074. F145 60             RTS
  3075.  
  3076. SINPEX2
  3077. F146 AD 1E 91       LDA D1IER
  3078. F149 29 30          AND #%00110000    ;$30
  3079. F14B F0 F2          BEQ SINPEX1    ;$F13F
  3080. F14D 18             CLC
  3081. F14E 60             RTS
  3082.  
  3083.  
  3084. ;====================================================================
  3085. ; SERGET - Get from RS-232
  3086. ;
  3087. SERGET
  3088. F14F AC 9C 02       LDY RIDBSR
  3089. F152 CC 9B 02       CPY RIDBE
  3090. F155 F0 06          BEQ SERGET1    ;$F15D
  3091.  
  3092. F157 E1 F7          LDA (RIBUF),Y
  3093. F159 EE 9C 02       INC RIDBSR
  3094. F15C 60             RTS
  3095.  
  3096. SERGET1
  3097. F15D A9 00          LDA #$00
  3098. F15F 60             RTS
  3099.  
  3100.  
  3101. ;====================================================================
  3102. ; SBIDLE - Serial bus idle
  3103. ;
  3104. SBIDLE
  3105. F160 48             PHA
  3106. F161 AD 1E 91       LDA D1IER
  3107. F164 F0 0C          BEQ SBIDLEX    ;$F172
  3108.  
  3109. SBIDLLP
  3110. F166 AD 1E 91       LDA D1IER
  3111. F169 29 60          AND #$60
  3112. F16B D0 F9          BNE SBIDLLP    ;$F166
  3113.  
  3114. F16D A9 10          LDA #$10
  3115. F16F 8D 1E 91       STA D1IER
  3116.  
  3117. SBIDLEX
  3118. F172 68             PLA
  3119. F173 60             RTS
  3120.  
  3121.  
  3122. ;====================================================================
  3123. ; KIOMSG - KERNEL I/O messages
  3124. ;
  3125. KIOMSG
  3126. F174 .db $0D, 'I/O ERROR', $0D, $0D        ;00h
  3127.  
  3128. F180 .db $0D, 'SEARCHING FOR '        ;0Ch
  3129.  
  3130. F18F .db $0D, 'PRESS PLAY ON TAPE'        ;1Bh
  3131.  
  3132. F1A2 .db 'PRESS RECORD & PLAY ON TAPE'    ;2Eh
  3133.  
  3134. F1BD .db $0D, 'LOADING'        ;49h
  3135.  
  3136. F1C5 .db $0D, 'SAVING '        ;51h
  3137.  
  3138. F1CD .db $0D, 'VERIFYING'        ;59h
  3139.  
  3140. F1D7 .db $0D, 'FOUND '        ;63h
  3141.  
  3142. F1DE .db $0D, 'OK <CR>'        ;6Ah
  3143.  
  3144.  
  3145. ;====================================================================
  3146. ; DIRMSG - Print message to screen if Direct
  3147. ;
  3148. DIRMSG
  3149. F1E2 24 9D          BIT $9D
  3150. F1E4 10 0D          BPL MSGEXIT    ;$F1F3
  3151. ;
  3152. ; MSG - Print message
  3153. ;
  3154. MSG
  3155. F1E6 B9 74 F1       LDA KIOMSG,Y    ; Y = message#
  3156. F1E9 08             PHP
  3157. F1EA 29 7F          AND #%01111111    ;$7F clear character shift
  3158. F1EC     JSR (CHOTVP)    ;CHROUT
  3159. F1EF C8             INY
  3160. F1F0 28             PLP
  3161. F1F1 10 F3          BPL MSG
  3162.  
  3163. MSGEXIT
  3164. F1F3 18             CLC
  3165. F1F4 60             RTS
  3166.  
  3167.  
  3168. ;====================================================================
  3169. ; IGETIN - Get a byte (internal)
  3170. ;
  3171. IGETIN
  3172. F1F5 A5 99          LDA INDEV      
  3173. F1F7 D0 08          BNE IGET232    ;$F201
  3174. F1F9 A5 C6          LDA KEYCNT
  3175. F1FB F0 6D          BEQ GTSCEXC    ;$F26A
  3176. F1FD 78             SEI
  3177. F1FE 4C CF E5       JMP LP2
  3178.  
  3179. IGET232
  3180. F201 C9 02          CMP #$02    ;input from RS-232?
  3181. F203 D0 18          BNE CHINSCRN    ;$F21D
  3182.  
  3183. IGETIN1
  3184. F205 84 97          STY REGSAV
  3185. F207 20 4F F1       JSR SERGET
  3186. F20A A4 97          LDY REGSAV
  3187. F20C 18             CLC
  3188. F20D 60             RTS
  3189.  
  3190.  
  3191. ;====================================================================
  3192. ; ICHRIN - Input a byte (internal)
  3193. ;
  3194. ICHRIN
  3195. F20E A5 99          LDA INDEV
  3196. F210 D0 0B          BNE CHINSCRN    ;$F21D not 0, must not be keyboard
  3197.  
  3198. F212 A5 D3          LDA CSRIDX
  3199. F214 85 CA          STA ICRCOL
  3200. F216 A5 D6          LDA CURROW
  3201. F218 85 C9          STA ICRROW
  3202. F21A 4C 4F E6       JMP INSCR    ;$E64F
  3203.  
  3204. CHINSCRN
  3205. F21D C9 03          CMP #$03    ;screen?
  3206. F21F D0 09          BNE ICHRIN1    ;$F22A
  3207.  
  3208. F221 85 D0          STA INSRC
  3209. F223 A5 D5          LDA LINLEN
  3210. F225 85 C8          STA EOLPTR
  3211. F227 4C 4F E6       JMP INSCR    ;$E64F
  3212.  
  3213. ICHRIN1
  3214. F22A B0 38          BCS GTTSCH1    ;$F264
  3215.  
  3216. F22C C9 02          CMP #$02    ;RS-232?
  3217. F22E F0 3F          BEQ GTTSCH2    ;$F26F
  3218.  
  3219. F230 86 97          STX REGSAV
  3220. F232 20 50 F2       JSR GTTSCH
  3221. F235 B0 16          BCS ICHREXIT    ;$F24D
  3222.  
  3223. F237 48             PHA
  3224. F238 20 50 F2       JSR GTTSCH
  3225. F23B B0 0D          BCS ICHRIN3    ;$F24A
  3226. F23D D0 05          BNE ICHRIN2    ;$F244
  3227. F23F A9 40          LDA #$40
  3228. F241 20 6A FE       JSR ISETMS+4    ;$FE6A
  3229.  
  3230. ICHRIN2
  3231. F244 C6 A6          DEC BUFPNT
  3232. F246 A6 97          LDX REGSAV
  3233. F248 68             PLA
  3234. F249 60             RTS
  3235.  
  3236. ICHRIN3
  3237. F24A AA             TAX
  3238. F24B 68             PLA
  3239. F24C 8A             TXA
  3240.  
  3241. ICHREXIT
  3242. F24D A6 97          LDX REGSAV
  3243. F24F 60             RTS
  3244.  
  3245.  
  3246. ;====================================================================
  3247. ; GTTSCH - Get input from tape/serial/RS-232
  3248. ;
  3249. GTTSCH
  3250. F250 20 8A F8       JSR INCTPT
  3251. F253 D0 0B          BNE GTTSCEX    ;$F260
  3252. F255 20 C0 F8       JSR TPREAD
  3253. F258 B0 11          BCS GTSCEXC+1    ;$F26B
  3254. F25A A9 00          LDA #$00
  3255. F25C 85 A6          STA BUFPNT
  3256. F25E F0 F0          BEQ GTTSCH    ;$F250
  3257.  
  3258. GTTSCEX
  3259. F260 B1 B2          LDA (CBSTPT),Y
  3260. F262 18             CLC
  3261. F263 60             RTS
  3262.  
  3263. GTTSCH1
  3264. F264 A5 90          LDA CSTAT
  3265. F266 F0 04          BEQ GTTSCH2    ;$F26C
  3266. F268 A9 0D          LDA #$0D
  3267.  
  3268. GTSCEXC
  3269. F26A 18             CLC
  3270. F26B 60             RTS
  3271.  
  3272. GTTSCH2
  3273. F26C 4C 19 EF       JMP ACPTR
  3274.  
  3275. GTSCHLP
  3276. F26F 20 05 F2       JSR IGETIN1
  3277. F272 B0 05          BCS GTSCEX2    ;$F279
  3278. F274 C9 00          CMP #$00
  3279. F276 F0 F7          BEQ GTSCHLP    ;$F26F
  3280.  
  3281. F278 18             CLC
  3282.  
  3283. GTSCEX2
  3284. F279 60             RTS
  3285.  
  3286.  
  3287. ;====================================================================
  3288. ; ICHROT - Output one character (internal)
  3289. ;
  3290. ICHROT
  3291. F27A 48            PHA
  3292. F27B A5 9A          LDA OUTDEV
  3293. F27D C9 03          CMP #$03    ;screen?
  3294. F27F D0 04          BNE ONOTSCR    ;$F285 no, skip
  3295.  
  3296. F281 68             PLA
  3297. F282 4C 42 E7       JMP OUTSCR    ;send to screen
  3298.  
  3299. ONOTSCR
  3300. F285 90 04          BCC OTIEEE    ;$F28B serial - RS232 or IEEE?
  3301.  
  3302. F287 68             PLA
  3303. F288 4C E4 EE       JMP ICIOUT    ;send to IEEE
  3304.  
  3305. OTIEEE
  3306. F28B C9 02          CMP #$02
  3307. F28D F0 2A          BEQ OTRS232    ;$F2B9 send to RS232
  3308.  
  3309. F28F 68             PLA    ;must be tape
  3310. F290 85 9E          STA TPTR1
  3311. F292 48             PHA
  3312. F293 8A             TXA
  3313. F294 48             PHA
  3314. F295 98             TYA
  3315. F296 48             PHA
  3316. F297 20 8A F8       JSR INCTPT    ;increment tape pointer
  3317. F29A D0 0E          BNE CHROT1    ;$F2AA
  3318.  
  3319. F29C 20 E3 F8       JSR TPWRIT    ;write char
  3320. F29F B0 0E          BCS CHROT2    ;$F2AF
  3321.  
  3322. F2A1 A9 02          LDA #$02
  3323. F2A3 A0 00          LDY #$00
  3324. F2A5 91 B2          STA (CBSTPT),Y
  3325. F2A7 C8             INY
  3326. F2A8 84 A6          STY BUFPNT
  3327.  
  3328. CHROT1
  3329. F2AA A5 9E          LDA TPTR1
  3330. F2AC 91 B2          STA (CBSTPT),Y
  3331. F2AE 18             CLC
  3332. F2AF 68             PLA
  3333.  
  3334. CHROT2
  3335. F2B0 A8             TAY
  3336. F2B1 68             PLA
  3337. F2B2 AA             TAX
  3338. F2B3 68             PLA
  3339. F2B4 90 02          BCC CHRRET    ;$F2B8
  3340. F2B6 A9 00          LDA #$00
  3341.  
  3342. CHRRET
  3343. F2B8 60             RTS
  3344.  
  3345. OTRS232
  3346. F2B9 68             PLA
  3347. F2BA 86 97          STX REGSAV
  3348. F2BC 84 9E          STY TPTR1
  3349. F2BE 20 ED F0       JSR SSENDB
  3350. F2C1 A6 97         LDX REGSAV
  3351. F2C3 A4 9E          LDY TPTR1
  3352. F2C5 18             CLC
  3353. F2C6 60             RTS
  3354.  
  3355. ;====================================================================
  3356. ; ICHKIN - Set input device (internal)
  3357. ;
  3358. ICHKIN
  3359. F2C7 20 CF F3       JSR FIND
  3360. F2CA F0 03          BEQ ICHKI1    ;$F2CF
  3361. F2CC 4C 84 F7       JMP IOERMS3    ;$F784
  3362.  
  3363. ICHKI1
  3364. F2CF 20 DF F3       JSR FLATRB
  3365. F2D2 A5 BA          LDA CHANNL
  3366. F2D4 F0 16          BEQ ICHKI2    ;$F2EC
  3367.  
  3368. F2D6 C9 03          CMP #$03    ;SCREEN?
  3369. F2D8 F0 12          BEQ ICHKI2    ;$F2EC
  3370. F2DA B0 14          BCS ICHKI3    ;$F2F0 IEEE?
  3371.  
  3372. F2DC C9 02          CMP #$02    ;RS232?
  3373. F2DE D0 03          BNE $+3    ;$F2E3
  3374. F2E0 4C 16 F1       JMP SERINP    ;go to serial input
  3375.  
  3376. F2E3 A6 B9          LDX SECADR
  3377. F2E5 E0 60          CPX #$60
  3378. F2E7 F0 03          BEQ ICHKI2    ;$F2EC
  3379. F2E9 4C 8D F7       JMP IOERMS6    ;$F78D
  3380.  
  3381. ICHKI2
  3382. F2EC 85 99          STA INDEV
  3383. F2EE 18             CLC
  3384. F2EF 60             RTS
  3385.  
  3386. ICHKI3        ;handle IEEE
  3387. F2F0 AA             TAX
  3388. F2F1 20 14 EE       JSR TALK
  3389. F2F4 A5 B9          LDA SECADR
  3390. F2F6 10 06          BPL ICHKI4    ;$F2FE
  3391. F2F8 20 D3 EE       JSR CLKWAIT
  3392. F2FB 4C 01 F3       JMP ICHKI4+3    ;$F301
  3393.  
  3394. ICHKI4
  3395. F2FE 20 CE EE       JSR TKSA
  3396. F301 8A             TXA
  3397. F302 24 90          BIT CSTAT
  3398. F304 10 E6          BPL ICHKI2    ;$F2EC
  3399. F306 4C 8A F7       JMP IOERMS5    ;$F78A
  3400.  
  3401.  
  3402. ;====================================================================
  3403. ; ICHKOT - Set output device (internal)
  3404. ;
  3405. ICHKOT
  3406. F309 20 CF F3      JSR FIND
  3407. F30C F0 03         BEQ $+3    ;$F311
  3408. F30E 4C 84 F7      JMP IOERMS3    ;$F784 Press play
  3409.  
  3410. F311 20 DF F3      JSR FLATRB
  3411. F314 A5 BA         LDA CHANNL
  3412. F316 D0 03         BNE $+3    ;$F31B
  3413.  
  3414. ICHKER7
  3415. F318 4C 90 F7      JMP IOERMS7    ;$F790 dev0=kbd Verify
  3416.  
  3417. F31B C9 03         CMP #$03    ;screen?
  3418. F31D F0 0F         BEQ ICHKO1    ;$F32E
  3419. F31F B0 11         BCS ICHKO2    ;$F332 IEEE
  3420.  
  3421. F321 C9 02         CMP #$02    ;RS232?
  3422. F323 D0 03         BNE $+3    ;$F328
  3423. F325 4C BC F0      JMP SSUBBT
  3424.  
  3425. F328 A6 B9         LDX SECADR    ;devs 0, 1
  3426. F32A E0 60         CPX #$60
  3427. F32C F0 EA         BEQ ICHKER7    ;$F318 tape verify
  3428.  
  3429. ICHKO1        ;screen
  3430. F32E 85 9A         STA OUTDEV    
  3431. F330 18            CLC
  3432. F331 60            RTS
  3433.  
  3434. ICHKO2        ;IEEE
  3435. F332 AA            TAX    
  3436. F333 20 17 EE      JSR LISTEN
  3437. F336 A5 B9         LDA SECADR
  3438. F338 10 05         BPL $+5    ;$F33F
  3439.  
  3440. F33A 20 C5 EE      JSR CLRATN
  3441. F33D D0 03         BNE $+3    ;$F342
  3442.  
  3443. F33F 20 C0 EE      JSR ISECND
  3444. F342 8A            TXA
  3445. F343 24 90         BIT CSTAT
  3446. F345 10 E7         BPL ICHKO1    ;$F32E
  3447.  
  3448. F347 4C 8A F7      JMP IOERMS5    ;$F78A Loading
  3449.  
  3450.  
  3451. ;====================================================================
  3452. ; ICLOSE - Close file (internal)
  3453. ;
  3454. ICLOSE
  3455. F34A 20 D4 F3      JSR $F3D4
  3456. F34D F0 02         BEQ $+2    ;$F351
  3457. F34F 18            CLC
  3458. F350 60            RTS
  3459.  
  3460. ICLSE
  3461. F351 20 DF F3      JSR FLATRB
  3462. F354 8A            TXA
  3463. F355 48            PHA
  3464. F356 A5 BA         LDA CHANNL
  3465. F358 F0 57         BEQ $F3B1
  3466.  
  3467. F35A C9 03         CMP #$03    ;screen
  3468. F35C F0 53         BEQ ICLSE4    ;$F3B1
  3469. F35E B0 4E         BCS ICLSE3    ;$F3AE
  3470.  
  3471. F360 C9 02         CMP #$02    ;RS232
  3472. F362 D0 29         BNE ICLSE1    ;$F38D
  3473.  
  3474. F364 68            PLA
  3475. F365 20 B2 F3      JSR ICLSE4+1    ;$F3B2
  3476. F368 A9 7D         LDA #%011111101    ;$7D
  3477. F36A 8D 1E 91      STA D1IER
  3478. F36D A9 06         LDA #%00000110    ;$06
  3479. F36F 8D 10 91      STA D1OUTB
  3480. F372 A9 EE         LDA #11101110    ;$EE
  3481. F374 8D 1C 91      STA D1PCR
  3482. F377 20 75 FE      JSR IMEMTP+2    ;$FE75
  3483. F37A A5 F8         LDA RIBUF+1
  3484. F37C F0 01         BEQ $+1    ;$F37F
  3485.  
  3486. F37E C8            INY
  3487. F37F A5 FA         LDA ROBUF+1
  3488. F381 F0 01         BEQ $+1    ;$F384
  3489.  
  3490. F383 C8            INY
  3491. F384 A9 60         LDA #$00
  3492. F386 65 F8         STA RIBUF+1
  3493. F388 85 FA         STA ROBUF+1
  3494. F38A 4C 3C F5      JMP $F53C
  3495.  
  3496. ICLSE1
  3497. F38D A5 B9         LDA SECADR
  3498. F38F 29 0F         AND #%00001111    ;$0F
  3499. F391 F0 1E         BEQ ICLSE4    ;$F3B1
  3500.  
  3501. F393 20 4D F8      JSR GETBFA    ;$F84D
  3502. F396 A9 00         LDA #$00
  3503. F398 20 90 F2      JSR OTIEEE+4    ;$F290 skips channel check
  3504. F39B 4C CF E4      JMP TPWPCH    ;$E4CF
  3505.  
  3506. ICLSE1
  3507. F39E B0 2E         BCS ICLSEEX    ;$F3CE
  3508. F3A0 A5 B9         LDA SECADR
  3509. F3A2 C9 62         CMP #$62
  3510. F3A4 D0 0B         BNE ICLSE4    ;$F3B1
  3511. F3A6 A9 05         LDA #$05
  3512. F3A8 20 E7 F7      JSR WRTPHD
  3513. F3AB 4C B1 F3      JMP ICLSE4    ;$F3B1
  3514.  
  3515. F3AE 20 DA F6      JSR $F6DA
  3516.  
  3517. ICLSE4
  3518. F3B1 68            PLA
  3519. F3B2 AA            TAX
  3520. F3B3 C6 98         DEC COPNFL
  3521. F3B5 E4 98         CPX COPNFL
  3522. F3B7 F0 14         BEQ $F3CD
  3523. F3B9 A4 98         LDY COPNFL
  3524. F3BB B9 59 02      LDA FILTBL,Y
  3525. F3BE 9D 59 02      STA FILTBL,X
  3526. F3C1 B9 63 02      LDA DEVTBL,Y
  3527. F3C4 9D 63 02      STA DEVTBL,X
  3528. F3C7 B9 6D 02      LDA SECTAB,Y
  3529. F3CA 9D 6D 02      STA SECTAB,X
  3530. F3CD 16            CLC
  3531.  
  3532. ICLSEEX
  3533. F3CE 60            RTS
  3534.  
  3535.  
  3536. ;====================================================================
  3537. ; FIND - Find file
  3538. ;
  3539. FIND
  3540. F3CF A9 00         LDA #$00
  3541. F3D1 85 90         STA CSTAT
  3542. F3D3 8A            TXA
  3543. F3D4 A6 98         LDX COPNFL
  3544.  
  3545. FINDLOOP
  3546. F3D6 CA            DEX
  3547. F3D7 30 15         BMI FLATRBX    ;$F3EE
  3548.  
  3549. F3D9 DD 59  02     CMP FILTBL,X
  3550. F3DC 60 F8         BNE FINDLOOP    ;$F3D6
  3551.  
  3552. F3DE 60            RTS
  3553.  
  3554. ;====================================================================
  3555. ; FLATRB - Set file values
  3556. ;
  3557. FLATRB
  3558. F3DF BD 59 02    LDA FILTBL,X
  3559. F3E2 85 B8    STA LOGFIL
  3560. F3E4 BD 63 02    LDA DEVTBL,X
  3561. F3E7 85 BA    STA CHANNL
  3562. F3E9 BD 6D 02    LDA SECTAB,X
  3563. F3EC 85 B9    STA SECADR
  3564.  
  3565. FLATRBX
  3566. F3EE 60    RTS
  3567. ;====================================================================
  3568. ; ICLALL - Abort all files (internal)
  3569. ;
  3570. ICLALL
  3571. F3EF A9 00         LDA #$00
  3572. F3F1 85 98         STA COPNFL
  3573.  
  3574. ;====================================================================
  3575. ; ICLRCH - Restore default I/O (internal)
  3576. ;
  3577. ICLRCH
  3578. F3F3 A2 03         LDX #$03
  3579. F3F5 E4 9A         CPX OUTDEV    ;is output device <=3
  3580. F3F7 B0 03         BCS $+3    ;$F3FC yes, continue 
  3581.  
  3582. F3F9 20 04 EF      JSR IUNLSN    ;send unlisten command
  3583.  
  3584. F3FC E4 99         CPX INDEV    ;is input device <=3
  3585. F3FE B0 03         BCS $+3    ;$F403 yes, continue
  3586.  
  3587. F400 20 F6 EE      JSR IUNTLK    ;send untalk
  3588.  
  3589. F403 86 9A         STX OUTDEV
  3590. F405 A9 00         LDA #$00
  3591. F407 85 99         STA INDEV
  3592. F409 60            RTS
  3593.  
  3594.  
  3595. ;====================================================================
  3596. ; IOPEN - Open file (internal)
  3597. ;
  3598. IOPEN
  3599. F40A A6 B8         LDX LOGFIL
  3600. F40C D0 03         BNE $+3    ;F411 <>0 not "save"
  3601. F40E 4C 8D F7      JMP IOERMS6    ;$F78D saving
  3602.  
  3603. F411 20 CF F3      JSR FIND
  3604. F414 D0 03         BNE $+3    ;F419
  3605. F416 4C 81 F7      JMP IOERMS2    ;$F781 searching for
  3606.  
  3607. F419 A6 98         LDX COPNFL
  3608. F41B E0 0A         CPX #$0A    ;10 files open?
  3609. F41D 90 03         BCC $+3    ;F422
  3610. F41F 4C 7E F7      JMP IOERMS    ;I/O error
  3611.  
  3612. F422 E6 98         INC COPNFL
  3613. F424 A5 B8         LDA LOGFIL
  3614. F426 9D 59 02      STA FILTBL,X
  3615. F429 A5 B9         LDA SECADR
  3616. F42B 09 60         ORA #%01100000    ;$60
  3617. F42D 85 B9         STA SECADR
  3618. F42F 9D 6D 02      STA SECTAB,X
  3619. F432 A5 BA         LDA CHANNL
  3620. F434 9D 63 02      STA DEVTBL,X
  3621. F437 F0 5A         BEQ IOPENRC    ;$F493 return clear
  3622.  
  3623. F439 C9 03         CMP #$03    ;screen?
  3624. F43B F0 56         BEQ IOPENRC    ;$F493
  3625. F43D 90 05         BCC $+5    ;F444
  3626.  
  3627. F43F 20 95 F4      JSR SENDSA    ;send secondary
  3628. F442 90 4F         BCC IOPENRC    ;$F493 return clear
  3629.  
  3630. F444 C9 02         CMP #$02    ;RS232?
  3631. F446 D0 03         BNE $+3    ;F44B not RS232
  3632. F448 4C C7 F4      JMP SEROPN
  3633.  
  3634. F44B 20 4D F8      JSR GETBFA    ;not screen or RS232
  3635. F44E B0 03         BCS $+3    ;F453
  3636. F450 4C 96 F7      JMP IOERMS9    ;$F796 OK
  3637.  
  3638. F453 A5 B9         LDA SECADR
  3639. F455 29 0F         AND #$0F
  3640. F457 D0 1F         BNE IOPEN2    ;$F478
  3641.  
  3642. F459 20 94 F8      JSR PLAYMS
  3643. F45C B0 36         BCS IOPENRC+1    ;$F494 return CY=1
  3644.  
  3645. F45E 20 47 F6      JSR SRCHMS    ;searching
  3646. F461 A5 B7         LDA FNMLEN
  3647. F463 F0 0A         BEQ IOPEN1    ;F46F    name found
  3648.  
  3649. F465 20 67 F8      JSR LOCSPH
  3650. F468 90 18         BCC IOPEN3    ;$F482
  3651. F46A F0 28         BEQ IOPENRC+1    ;$F494 return CY=1
  3652.  
  3653. IOPENA
  3654. F46C 4C 87 F7      JMP SETTIME
  3655.  
  3656. IOPEN1
  3657. F46F 20 AF F7      JSR LOCTPH
  3658. F472 F0 20         BEQ IOPENRC+1    ;$F494
  3659. F474 90 0C         BCC IOPEN3    ;$F482
  3660. F476 B0 F4         BCS IOPENA    ;$F46C
  3661.  
  3662. IOPEN2
  3663. F478 20 B7 F8      JSR RECDMS
  3664. F47B B0 17         BCS IOPENRC+1    ;$F494 return CY=1
  3665.  
  3666. F47D A9 04         LDA #$04
  3667. F47F 20 E7 F7      JSR WRTPHD
  3668.  
  3669. IOPEN3
  3670. F482 A9 BF         LDA #$BF
  3671. F484 A4 B9         LDY SECADR
  3672. F486 C0 60         CPY #$60
  3673. F488 F0 07         BEQ IOPENRC-2    ;$F491
  3674.  
  3675. F48A A0 00         LDY #$00
  3676. F48C A9 02         LDA #$02
  3677. F48E 91 B2         STA (CBSTPT),Y
  3678. F490 98            TYA
  3679. F491 65 A6         STA BUFPNT
  3680.  
  3681. IOPENRC
  3682. F493 18            CLC
  3683. F494 60            RTS
  3684.  
  3685.  
  3686. ;====================================================================
  3687. ; SENDSA - Send secondary address
  3688. ;
  3689. SENDSA
  3690. F495 A5 B9         LDA SECADR
  3691. F497 30 2C         BMI SNDSARC    ;$F4C5
  3692.  
  3693. F499 A4 B7         LDY FNMLEN
  3694. F49B F0 28         BEQ SNDSARC    ;$F4C5
  3695.  
  3696. F49D A5 BA         LDA CHANNL
  3697. F49F 20 17 EE      JSR LISTEN
  3698. F4A2 A5 B9         LDA SECADR
  3699. F4A4 09 F0         ORA #%11110000    ;$F0
  3700. F4A6 20 C0 EE      JSR ISECND    ;$EEC0
  3701. F4A9 A5 90         LDA CSTAT
  3702. F4AB 10 05         BPL SENDSA1    ;$F4B2
  3703.  
  3704. F4AD 68            PLA
  3705. F4AE 68            PLA
  3706. F4AF 4C 8A F7      JMP IOERMS1    ;$F78A
  3707.  
  3708. SENDSA1
  3709. F4B2 A5 B7         LDA FNMLEN
  3710. F4B4 F0 0C         BEQ SNDSARU    ;$F4C2
  3711.  
  3712. F4B6 A0 00         LDY #$00
  3713.  
  3714. SENDSALP
  3715. F4B8 B1 BB         LDA (FNPTR),Y    ;send chrout to filename
  3716. F4BA 20 E4 EE      JSR ICIOUT
  3717. F4BD C8            INY
  3718. F4BE C4 B7         CPY FNMLEN
  3719. F4C0 D0 F6         BNE SEMDSALP    ;$F4B8
  3720.  
  3721. SNDSARU
  3722. F4C2 20 04 EF      JSR IUNLSN
  3723.  
  3724. SNDSARC
  3725. F4C5 18            CLC
  3726. F4C6 60            RTS
  3727.  
  3728.  
  3729. ;====================================================================
  3730. ; SEROPN - Open RS-232
  3731. ;
  3732. SEROPN
  3733. F4C7 A9 06         LDA #%00000110    ;$06
  3734. F4C9 8D 12 91      STA D1DDRA
  3735. F4CC 8D 10 91      STA D1OUTB
  3736. F4CF A9 EE         LDA #%11101110    ;$EE
  3737. F4D1 8D 1C 91      STA D1PCR
  3738. F4D4 A0 00         LDY #$00
  3739. F4D6 8C 97 02      STY RSSTAT
  3740.  
  3741. SEROPLP
  3742. F4D9 C4 B7         CPY FNMLEN
  3743. F4DB F0 0A         BEQ SEROPN1    ;$F4E7
  3744.  
  3745. F4DD B1 BB         LDA (FNPTR),Y
  3746. F4DF 99 93 02      STA M51CTR,Y
  3747. F4E2 C8            INY
  3748. F4E3 C0 04         CPY #$04
  3749. F4E5 D0 F2         BNE SEROPLP    ;$F4D9
  3750.  
  3751. SEROPN1
  3752. F4E7 20 27 F0      JSR BITCNT
  3753. F4EA 8E 98 02      STX BITNUM
  3754. F4ED AD 93 02      LDA M51CTR
  3755. F4F0 29 0F         AND #%00001111    ;$0F
  3756. F4F2 D0 00         BNE $+0    ;F4F4
  3757.  
  3758. F4F4 0A            ASL
  3759. F4F5 AA            TAX
  3760. F4F6 BD 5A FF      LDA R232TB-2,X    ;$FF5A,X
  3761. F4F9 0A            ASL
  3762. F4FA A8            TAY
  3763. F4FB BD 5B FF      LDA R232TB-1,X    ;$FF5B,X
  3764. F4FE 2A            ROL
  3765. F4FF 48            PHA
  3766. F500 9B            TYA
  3767. F501 69 C8         ADC #$C8
  3768. F503 8D 99 02      STA BAUDOF
  3769. F506 68            PLA
  3770. F507 69 00         ADC #$00
  3771. F509 8D 9A 02      STA BAUDOF+1
  3772. F50C AD 94 02      LDA M51CDR
  3773. F50F 4A            LSR
  3774. F510 90 09         BCC SEROPN2    ;$F51B
  3775.  
  3776. F512 AD 20 91      LDA D2ORB
  3777. F515 0A            ASL
  3778. F516 B0 03         BCS SEROPN2    ;$F51B
  3779. F518 4C 16 F0      JMP DSRERR
  3780.  
  3781. SEROPN2
  3782. F51B AD 9B 02      LDA RIDBE
  3783. F51E 8D 9C 02      STA RIDBSR
  3784. F521 AD 9E 02      LDA RODBE
  3785. F524 8D 9D 02      STA RODBS
  3786. F527 20 75 FE      JSR IMEMTP+2    ;$FE75
  3787.  
  3788. F52A A5 F8         LDA RIBUF+1
  3789. F52C D0 05         BNE SEROPN3    ;$F533
  3790.  
  3791. F52E 88            DEY
  3792. F52F 84 F8         STY RIBUF+1
  3793. F531 86 F7         STX RIBUF
  3794.  
  3795. SEROPN3
  3796. F533 A5 FA         LDA ROBUF+1
  3797. F535 D0 05         BNE $F53C
  3798. F537 88            DEY
  3799. F538 84 FA         STY ROBUF+1
  3800. F53A 86 F9         STX ROBUF
  3801. F53C 38            SEC
  3802. F53D A9 F0         LDA #$F0
  3803. F53F 4C 7B FE      JMP STOTOP    ;$FE7B
  3804.  
  3805.  
  3806. ;====================================================================
  3807. ; ILOAD - Load RAM from device (internal)
  3808. ;
  3809. ILOAD
  3810. F542 86 C3         STX MEMUSS    ;save load location
  3811. F544 84 C4         STY MEMUSS+1
  3812. F546 6C 30 03      JMP (CLOADV)
  3813.  
  3814.  
  3815. ;====================================================================
  3816. ; LNKLOD - Load RAM (indirect from $0330)
  3817. ;
  3818. LNKLOD
  3819. F549 85 93         STA IOFLG2
  3820. F54B A9 00         LDA #$00
  3821. F54D 85 90         STA CSTAT
  3822. F54F A5 BA         LDA CHANNL
  3823. F551 D0 03         BNE $+3    ;$F556
  3824.  
  3825. LNKLDEX
  3826. F553 4C 96 F7      JMP IOERMS9    ;$F796 "OK"
  3827.  
  3828. F556 C9 03         CMP #$03    ;screen?
  3829. F558 F0 F9         BEQ LNKLDEX    ;$F553
  3830. F55A 90 6E         BCC TAPLOA    ;<3, must be tape
  3831. ;
  3832. ; SERLOA - Load file from serial bus
  3833. ;
  3834. SERLOA
  3835. F55C A4 B7         LDY FNMLEN
  3836. F55E D0 03         BNE $+3    ;F563
  3837. F560 4C 93 F7      JMP IOERMS8    ;$F793 found
  3838.  
  3839. F563 20 BC E4      JSR SSADR    ;$E4BC
  3840. F566 A9 60         LDA #$60
  3841. F568 85 B9         STA SECADR
  3842. F56A 20 95 F4      JSR SENDSA
  3843. F56D A5 BA         LDA CHANNL
  3844. F56F 20 14 EE      JSR TALK
  3845. F572 A5 B9         LDA SECADR
  3846. F574 20 CE EE      JSR TKSA
  3847. F577 20 19 EF      JSR IACPTR
  3848. F57A 85 AE         STA EAL
  3849. F57C A5 90         LDA CSTAT
  3850. F57E 4A            LSR
  3851. F57F 4A            LSR
  3852. F580 B0 45         BCS SERLDEX    ;$F5C7
  3853.  
  3854. F582 20 19 EF      JSR IACPTR
  3855. F585 85 AF         STA EAL+1
  3856. F587 20 C1 E4      JSR SLDPCH    ;$E4C1
  3857.  
  3858. SERLDLP
  3859. F58A A9 FD         LDA #$FD
  3860. F58C 25 90         AND CSTAT
  3861. F58E 85 90         STA CSTAT
  3862. F590     JSR (STOPVP)    ;STOP
  3863. F593 D0 03         BNE $+3    ;F598
  3864. F595 4C CE F6      JMP SAVEXIT    ;$F6CE
  3865.  
  3866. F598 20 19 EF      JSR IACPTR
  3867. F59B AA            TAX
  3868. F59C A5 90         LDA CSTAT
  3869. F59E 4A            LSR
  3870. F59F 4A            LSR
  3871. F5A0 B0 E8         BCS SERLDLP    ;$F58A
  3872.  
  3873. F5A2 8A            TXA
  3874. F5A3 A4 93         LDY IOFLG2
  3875. F5A5 F0 0C         BEQ SERLD1    ;$F5B3
  3876.  
  3877. F5A7 A0 00         LDY #$00
  3878. F5A9 D1 AE         CMP (EAL),Y
  3879. F5AB F0 08         BEQ SERLD2    ;$F5B5
  3880.  
  3881. F5AD A9 10         LDA #$10
  3882. F5AF 20 6A FE      JSR ISETMS1    ;$FE6A
  3883. F5B2 2C     .db $2C    ;bit $ae91
  3884.  
  3885. SERLD1
  3886. F5B3 91 AE      STA (EAL),Y
  3887.  
  3888. SERLD2
  3889. F5B5 E6 AE         INC EAL
  3890. F5B7 D0 02         BNE $+2    ;$F5BB
  3891.  
  3892. F5B9 E6 AF         INC EAL+1
  3893. F5BB 24 90         BIT CSTAT
  3894. F5BD 50 CB         BVC SERLDLP    ;$F58A
  3895.  
  3896. F5BF 20 F6 EE      JSR IUNTLK
  3897. F5C2 20 DA F6      JSR $F6DA
  3898. F5C5 90 7A         BCC TPLOAEX    ;$F641
  3899.  
  3900. SERLDEX
  3901. F5C7 4C 87 F7      JMP IOERMS4    ;$F787 play & rec
  3902.  
  3903.  
  3904.  
  3905. ;====================================================================
  3906. ; TAPLOA - Load file from tape
  3907. ;
  3908. TAPLOA
  3909. F5CA C9 02         CMP #$02
  3910. F5CC D0 03         BNE $+3    ;F5D1
  3911. F5CE 4C B9 F0      JMP IOERMS9    ;$F0B9
  3912.  
  3913. F5D1 20 4D F8      JSR GETBFA
  3914. F5D4 B0 03         BCS $+3    ;F5D9
  3915. F5D6 4C 96 F7      JMP IOERMS9    ;$F796
  3916.  
  3917. F5D9 20 94 F8      JSR PLAYMS
  3918. F5DC B0 68         BCS TPLORTS
  3919.  
  3920. F5DE 20 47 F6      JSR SRCHMS
  3921.  
  3922. TAPLOALP
  3923. F5E1 A5 B7         LDA FNMLEN
  3924. F5E3 F0 09         BEQ TAPLOA1    ;$F5EE
  3925.  
  3926. F5E5 20 67 F8      JSR LOCSPH
  3927. F5E8 90 0B         BCC TAPLOA2    ;$F5F5
  3928. F5EA F0 5A         BEQ TPLORTS
  3929. F5EC B0 D9         BCS SERLDEX    ;$F5C7
  3930.  
  3931. TAPLOA1
  3932. F5EE 20 AF F7      JSR LOCTPH
  3933. F5F1 F0 53         BEQ TPLORTS
  3934. F5F3 B0 D2         BCS SERLDEX    ;$F5C7
  3935.  
  3936. TAPLOA2
  3937. F5F5 A5 90         LDA CSTAT
  3938. F5F7 29 10         AND #%00010000    ;$10
  3939. F5F9 38            SEC
  3940. F5FA D0 4A         BNE TPLORTS
  3941.  
  3942. F5FC E0 01         CPX #$01
  3943. F5FE F0 11         BEQ TAPLOA3    ;$F611
  3944.  
  3945. F600 E0 03         CPX #$03
  3946.  
  3947. TAPLOA2A
  3948. F602 D0 DD         BNE TAPLOALP    ;$F5E1
  3949.  
  3950. TALPOALP2
  3951. F604 A0 01         LDY #$01
  3952. F606 B1 B2         LDA (CBSTPT),Y
  3953. F608 85 C3         STA MEMUSS
  3954. F60A C8            INY
  3955. F60B B1 B2         LDA (CBSTPT),Y
  3956. F60D 85 C4         STA MEMUSS+1
  3957. F60F B0 04         BCS TAPLOA4    ;$F615
  3958.  
  3959. TAPLOA3
  3960. F611 A5 B9         LDA SECADR
  3961. F613 D0 EF         BNE TAPLOALP2    ;F604
  3962.  
  3963. TAPLOA4
  3964. F615 A0 03         LDY #$03
  3965. F617 B1 B2         LDA (CBSTPT),Y
  3966. F619 A0 01         LDY #$01
  3967. F61B F1 B2         SBC (CBSTPT),Y
  3968. F61D AA            TAX
  3969. F61E A0 04         LDY #$04
  3970. F620 B1 B2         LDA (CBSTPT),Y
  3971. F622 A0 02         LDY #$02
  3972. F624 F1 B2         SBC (CBSTPT),Y
  3973. F626 A8            TAY
  3974. F627 18            CLC
  3975. F628 8A            TXA
  3976. F629 65 C3         ADC MEMUSS
  3977. F62B 85 AE         STA EAL
  3978. F62D 98            TYA
  3979. F62E 65 C4         ADC MEMUSS+1
  3980. F630 85 AF         STA EAL+1
  3981. F632 A5 C3         LDA MEMUSS
  3982. F634 85 C1         STA STAL
  3983. F636 A5 C4         LDA MEMUSS+1
  3984. F638 85 C2         STA STAL+1
  3985. F63A 20 6A F6      JSR LOADMS
  3986. F63D 20 C9 F8      JSR TPREAD1    ;$F8C9
  3987. F640 24     .db$24    ;BIT LASTPT+1
  3988.  
  3989. TPLOAEX
  3990. F641 18    CLC
  3991. F642 A6 AE         LDX EAL
  3992. F644 A4 AF         LDY EAL+1
  3993.  
  3994. TPLORTS
  3995. F646 60            RTS
  3996.  
  3997.  
  3998.  
  3999. ;====================================================================
  4000. ; SRCHMS - Print "Searching"
  4001. ;
  4002. SRCHMS
  4003. F647 A5 9D         LDA CMDMOD
  4004. F649 10 1E         BPL SRCHEX    ;$F669
  4005.  
  4006.  
  4007. F64B A0 0C         LDY #$0C    ;"Searching for"
  4008. F64D 20 E6 F1      JSR MSG
  4009. F650 A5 B7         LDA FNMLEN
  4010. F652 F0 15         BEQ SRCHEX    ;$F669
  4011. F654 A0 17         LDY #$17    ;point to "FOR" in "Searching For"
  4012. F656 20 E6 F1      JSR MSG
  4013. ;
  4014. ; FLNMMS - Print filename
  4015. ;
  4016. FLNMMS
  4017. F659 A4 B7         LDY FNMLEN
  4018. F65B F0 0C         BEQ SRCHEX    ;$F669
  4019. F65D A0 00         LDY #$00
  4020.  
  4021. FLNMLP
  4022. F65F B1 BB         LDA (FNPTR),Y
  4023. F661     JSR (CHOTVP)    ;CHROUT
  4024. F664 C8            INY
  4025. F665 C4 B7         CPY FNMLEN
  4026. F667 D0 F6         BNE FLNMLP    ;$F65F
  4027.  
  4028. SRCHEX
  4029. F669 60            RTS
  4030.  
  4031.  
  4032. ;====================================================================
  4033. ; LOADMS - Print "Loading" or "Verifying"
  4034. ;
  4035. LOADMS
  4036. F66A A0 49         LDY #$49    ;"Loading"
  4037. F66C A5 93         LDA IOFLG2
  4038. F66E F0 02         BEQ DOMESG    ;$F672
  4039.  
  4040. F670 A0 59         LDY #$59    ;"Verifying"
  4041.  
  4042. DOMESG
  4043. F672 4C E2 F1      JMP DIRMSG
  4044.  
  4045.  
  4046. ;====================================================================
  4047. ; ISAVE - Save RAM to device
  4048. ;
  4049. ISAVE
  4050. F675 86 AE         STX EAL
  4051. F677 84 AF         STY EAL+1
  4052. F679 AA            TAX
  4053. F67A B5 00         LDA USRPOK,X
  4054. F67C 85 C1         STA STAL
  4055. F67E B5 01         LDA USRVEC,X
  4056. F680 85 C2         STA STAL+1
  4057. F682 6C 32 03      JMP (CSAVEV)
  4058.  
  4059.  
  4060. ;====================================================================
  4061. ; LNKSAV - Link to SAVE (indirect from $0302)
  4062. ;
  4063. LNKSAV
  4064. F685 A5 BA         LDA CHANNL    ;Get current device
  4065. F687 D0 03         BNE $+3    ;F68C Not 0, continue
  4066. F689 4C 96 F7      JMP IOERMS9    ;$F796 OK 
  4067.  
  4068. F68C C9 03         CMP #$03    ;Device 3 (printer 3-5)
  4069. F68E F0 F9         BEQ $-5    ;$F689
  4070. F690 90 5F         BCC TAPESV
  4071. ;
  4072. ; SERSAV - Save to serial bus
  4073. ;
  4074. SERSAV
  4075. F692 A9 61         LDA #$61
  4076. F694 85 B9         STA SECADR
  4077. F696 A4 B7         LDY FNMLEN
  4078. F698 D0 03         BNE $+3    ;$F69D
  4079. F69A 4C 93 F7      JMP IOERMS8    ;$F793 found
  4080.  
  4081. F69D 20 95 F4      JSR SENDSA
  4082. F6A0 20 28 F7      JSR SAVEMS
  4083. F6A3 A5 BA         LDA CHANNL
  4084. F6A5 20 17 EE      JSR LISTEN
  4085. F6A8 A5 B9         LDA SECADR
  4086. F6AA 20 C0 EE      JSR ISECND
  4087. F6AD A0 00         LDY #$00
  4088. F6AF 20 D2 FB      JSR RSTTPP
  4089. F6B2 A5 AC         LDA SAL
  4090. F6B4 20 E4 EE      JSR ICIOUT
  4091. F6B7 A5 AD         LDA SAL+1
  4092. F6B9 20 E4 EE      JSR ICIOUT
  4093.  
  4094. SERSAVLP
  4095. F6BC 20 11 FD      JSR CKWRPT
  4096. F6BF B0 16         BCS SERSAV1    ;$F6D7
  4097.  
  4098. F6C1 B1 AC         LDA (SAL),Y
  4099. F6C3 20 E4 EE      JSR ICIOUT
  4100. F6C6     JSR (STOPVP)    ;STOP
  4101. F6C9 DE 07         BNE TAPLOA2A    ;$F602
  4102.  
  4103. F6CB 20 DA F6      JSR SERSAV1A    ;$F6DA
  4104. F6CE A9 00         LDA #$00
  4105. F6D0 38           SEC
  4106. F6D1 60            RTS
  4107.  
  4108. F6D2 20 1B FD      JSR INCRDP    ;$FD1B
  4109. F6D5 D0 E5         BNE SERSAVLP    ;$F6BC
  4110.  
  4111. SERSAV1
  4112. F6D7 20 04 EF      JSR IUNLSN
  4113.  
  4114. SERSAV1A
  4115. F6DA 24 B9         BIT SECADR
  4116. F6DC 3E 11         BMI SERSAVRC    ;$F6EF
  4117.  
  4118. F6DE A5 BA         LDA CHANNL
  4119. F6E0 20 17 EE      JSR LISTEN
  4120. F6E3 A5 B9         LDA SECADR
  4121. F6E5 29 EF         AND #%11101111    ;$EF
  4122. F6E7 09 E0         ORA #%11100000    ;$E0
  4123. F6E9 20 C0 EE      JSR ISECND
  4124. F6EC 20 04 EF      JSR IUNLSN
  4125.  
  4126. SERSAVRC
  4127. F6EF 18            CLC
  4128. F6F0 60            RTS
  4129.  
  4130.  
  4131. ;====================================================================
  4132. ; TAPESV - Save to tape
  4133. ;
  4134. TAPESV
  4135. F6F1 C9 02         CMP #$02
  4136. F6F3 D0 03         BNE $+3    ;$F6F8
  4137. F6F5 4C 96 F7      JMP IOERMS9    ;was $F0B9 
  4138.  
  4139. F6F8 20 4D F8      JSR GETBFA
  4140. F6FB 90 BC         BCC $-6    ;LNKSAV+4 $F689 JMP IOERMS9
  4141.  
  4142. F6FD 20 B7 F8      JSR RECDMS
  4143. F700 B0 25         BCS TPSVRET    ;$F727 RTS
  4144.  
  4145. F702 20 28 F7      JSR SAVEMS    ;print "saving" message
  4146. F705 A2 03         LDX #$03
  4147. F707 A5 B9         LDA SECADR
  4148. F709 29 01         AND #%00000001    ;$01
  4149. F70B D0 02         BNE $+2    ;$F70F
  4150.  
  4151. F70D A2 01         LDX #$01
  4152. F70F 8A            TXA
  4153. F710 20 E7 F7      JSR WRTPHD
  4154. F713 B0 12         BCS TPSVRET    ;$F727
  4155.  
  4156. F715 20 E6 F8      JSR TPWRIT+3    ;$F8E6
  4157. F718 B0 0D         BCS TPSVRET    ;$F727
  4158.  
  4159. F71A A5 B9         LDA SECADR
  4160. F71C 29 02         AND #%00000010    ;$02
  4161. F71E F0 06         BEQ TPSVRET-1    ;$F726 exit with CLC
  4162.  
  4163. F720 A9 05         LDA #$05
  4164. F722 20 E7 F7      JSR WRTPHD
  4165. F725 24     .db $24    ; BIT $18
  4166. F726 18         CLC    
  4167.  
  4168. TPSVRET
  4169. F727 60            RTS
  4170.  
  4171.  
  4172. ;====================================================================
  4173. ; SAVEMS - Print "Saving"
  4174. ;
  4175. SAVEMS
  4176. F728 A5 9D         LDA CMDMOD
  4177. F72A 10 FB         BPL TPSVRET    ;$F727
  4178.  
  4179. F72C A0 51         LDY #$51    'Saving"
  4180. F72E 20 E6 F1      JSR MSG
  4181. F731 4C 59 F6      JMP FLNMMS    ;print filename
  4182.  
  4183.  
  4184. ;====================================================================
  4185. ; IUDTIM - Update RTC (internal)
  4186. ;
  4187. IUDTIM
  4188. F734 A2 00         LDX #$00
  4189. F736 E6 A2         INC CTIMR+2
  4190. F738 D0 06         BNE UDTIM1    ;$F740
  4191.  
  4192. F73A E6 A1         INC CTIMR+1
  4193. F73C D0 02         BNE UDTIM1    ;$F740
  4194.  
  4195. F73E E6 A0         INC CTIMR
  4196.  
  4197. UDTIM1
  4198. F740 38            SEC
  4199. F741 A5 A2         LDA CTIMR+2
  4200. F743 E9 01         SBC #$01
  4201. F745 A5 A1         LDA CTIMR+1
  4202. F747 E9 1A         SBC #$1A
  4203. F749 A5 A0         LDA CTIMR
  4204. F74B E9 4F         SEC #$4F
  4205. F74D 90 06         BCC UDTIM2    ;$F755
  4206.  
  4207. F74F 86 A0         STX CTIMR
  4208. F751 86 A1         STX CTIMR+1
  4209. F753 86 A2         STX CTIMR+2
  4210.  
  4211.  
  4212. UDTIM2
  4213. F755 AD 2F 91      LDA D2OUTA
  4214. F758 CD 2F 91      CMP D2OUTA
  4215. F75B D0 FB         BNE UDTIM2    ;$F755
  4216.  
  4217. F75D 85 91         STA STKEY
  4218. F75F 60            RTS
  4219.  
  4220.  
  4221. ;====================================================================
  4222. ; IRDTIM - Read RTC (internal)
  4223. ;
  4224. IRDTIM
  4225. F760 78            SEI
  4226. F761 A5 A2         LDA CTIMR+2
  4227. F763 A6 A1         LDX CTIMR+1
  4228. F765 A4 A0         LDY CTIMR
  4229.  
  4230.  
  4231. ;====================================================================
  4232. ; ISETTM - Set RTC (internal)
  4233. ;
  4234. ISETTM
  4235. F767 78            SEI 
  4236. F768 85 A2         STA CTIMR+2
  4237. F76A 86 A1         STX CTIMR+1
  4238. F76C 84 A0         STY CTIMR
  4239. F76E 58            CLI
  4240. F76F 60            RTS
  4241.  
  4242.  
  4243. ;====================================================================
  4244. ; ISTOP - Check STOP key
  4245. ;
  4246. ISTOP
  4247. F770 A5 91         LDA STKEY
  4248. F772 C9 FE         CMP #%11111110    ;$FE
  4249. F774 D0 07         BNE ISTOPEX    ;$F77D
  4250.  
  4251. F776 08            PHP
  4252. F777     JSR (CLCHVP)    ;CLRCH
  4253. F77A 85 C6         STA KEYCNT
  4254. F77C 28            PLP
  4255.  
  4256. ISTOPEX
  4257. F77D 60            RTS
  4258.  
  4259.  
  4260. ;====================================================================
  4261. ;IOERMS - I/O Error Message Table register load
  4262. ;         All use the BIT $xxA9 trick to skip unused entries
  4263. ;
  4264. IOERMS1
  4265. F77E A9 01         LDA #$01    ;I/O Error
  4266. F780 .db $2C
  4267.  
  4268. IOERMS2
  4269. F781 A9 02      LDA #$02    ;Searching for
  4270. F783 .db $2C 
  4271.  
  4272. IOERMS3
  4273. F784 A9 03      LDA #$03    ;Press Play on Tape
  4274. F786 .db $2C 
  4275.  
  4276. IOERMS4
  4277. F787 A9 04      LDA #$04    ;Press Record & Play on Tape
  4278. F789 .db $2C 
  4279.  
  4280. IOERMS5
  4281. F78A A9 05      LDA #$05    ;Loading
  4282. F78C .db $2C 
  4283.  
  4284. IOERMS6
  4285. F78D A9 06      LDA #$06    ;Saving
  4286. F78F .db $2C 
  4287.  
  4288. IOERMS7
  4289. F790 A9 07      LDA #$07    ;Verifying
  4290. F792 .db $2C 
  4291.  
  4292. IOERMS8
  4293. F793 A9 08      LDA #$08    ;Found
  4294. F795 .db $2C 
  4295.  
  4296. IOERMS9
  4297. F796 A9 09      LDA #$09    ;OK
  4298.  
  4299. F798 48            PHA
  4300. F799     JSR (CLCHVP)    ;CLRCH
  4301. F79C A0 00         LDY #$00
  4302. F79E 24 9D         BIT CMDMOD
  4303. F7A0 50 0A         BVC IOERMSEX    ;$F7AC
  4304.  
  4305. F7A2 20 E6 F1      JSR MSG    ;Error 0-I/O Error
  4306. F7A5 68            PLA
  4307. F7A6 48            PHA
  4308. F7A7 09 30         ORA #%00110000    ;$30
  4309. F7A9     JSR (CHOTVP)    ;CHROUT
  4310.  
  4311. IOERMSEX
  4312. F7AC 68            PLA
  4313. F7AD 38            SEC
  4314. F7AE 60            RTS
  4315.  
  4316.  
  4317. ;====================================================================
  4318. ; LOCTPH - Find any tape header
  4319. ;
  4320. LOCTPH
  4321. F7AF A5 93         LDA IOFLG2
  4322. F7B1 48            PHA
  4323. F7B2 20 C0 F8      JSR TPREAD
  4324. F7B5 68            PLA
  4325. F7B6 85 93         STA IOFLG2
  4326. F7B8 B0 2C         BCS $F7E6
  4327.  
  4328. F7BA A0 00         LDY #$00
  4329. F7BC B1 B2         LDA (CBSTPT),Y
  4330. F7BE C9 05         CMP #$05
  4331. F7C0 F0 24         BEQ LOCTPEX    ;$F7E6
  4332.  
  4333. F7C2 C9 01         CMP #$01
  4334. F7C4 F0 08         BEQ LOCTP1    ;$F7CE
  4335.  
  4336. F7C6 C9 03         CMP #$03
  4337. F7C8 F0 04         BEQ LOCTP1    ;$F7CE
  4338.  
  4339. F7CA C9 04         CMP #$04
  4340. F7CC D0 E1         BNE LOCTPH
  4341.  
  4342. LOCTP1
  4343. F7CE AA            TAX
  4344. F7CF 24 9D         BIT CMDMOD
  4345. F7D1 10 11         BPL LOCTPEX-2    ;$F7E4 return CLC
  4346.  
  4347. F7D3 A0 63         LDY #$63    ;"Found"
  4348. F7D5 20 E6 F1      JSR MSG
  4349. F7D8 A0 05         LDY #$05
  4350.  
  4351. LOCLOOP
  4352. F7DA B1 B2         LDA (CBSTPT),Y
  4353. F7DC     JSR (CHOTVP)    ;CHROUT
  4354. F7DF C8            INY
  4355. F7E0 C0 15         CPY #$15
  4356. F7E2 D0 F6         BNE LOCLOOP    ;$F7DA
  4357. F7E4 18            CLC
  4358. F7E5 88            DEY
  4359.  
  4360. LOCTPEX
  4361. F7E6 60            RTS
  4362.  
  4363.  
  4364.  
  4365. ;====================================================================
  4366. ; WRTPHD - Write tape header
  4367. ;
  4368. WRTPHD
  4369. F7E7 85 9E         STA TPTR1
  4370. F7E9 20 4D F8      JSR GETBFA
  4371. F7EC 90 5E         BCC WRTPEX    ;$F84C
  4372.  
  4373. F7EE A5 C2         LDA STAL+1
  4374. F7F0 48            PHA
  4375. F7F1 A5 C1         LDA STAL
  4376. F7F3 48            PHA
  4377. F7F4 A5 AF         LDA EAL+1
  4378. F7F6 48            PHA
  4379. F7F7 A5 AE         LDA EAL
  4380. F7F9 48            PHA
  4381. F7FA A0 BF         LDY #$BF
  4382. F7FC A9 20         LDA #$20
  4383.  
  4384. WRTPLP1
  4385. F7FE 91 B2         STA (CBSTPT),Y
  4386. F800 88            DEY
  4387. F801 D0 FB         BNE WRTPLP1    ;$F7FE
  4388.  
  4389. F803 A5 9E         LDA TPTR1
  4390. F805 91 B2         STA (CBSTPT),Y
  4391. F807 C8            INY
  4392. F808 A5 C1         LDA STAL
  4393. F80A 91 B2         STA (CBSTPT),Y
  4394. F80C C8            INY
  4395. F80D A5 C2         LDA STAL+1
  4396. F80F 91 B2         STA (CBSTPT),Y
  4397. F811 C8            INY
  4398. F812 A5 AE         LDA EAL
  4399. F814 91 B2         STA (CBSTPT),Y
  4400. F816 C8            INY
  4401. F817 A5 AF         LDA EAL+1
  4402. F819 91 B2         STA (CBSTPT),Y
  4403. F81B C8            INY
  4404. F81C 84 9F         STY TPTR2
  4405. F81E A0 00         LDY #$00
  4406. F820 84 9E         STY TPTR1
  4407.  
  4408. WRTPLP2
  4409. F822 A4 9E         LDY TPTR1
  4410. F824 C4 B7         CPY FNMLEN
  4411. F826 F0 0C         BEQ WRTPH1    ;$F834
  4412.  
  4413. F828 B1 BB         LDA (FNPTR),Y
  4414. F82A A4 9F         LDY TPTR2
  4415. F82C 91 B2         STA (CBSTPT),Y
  4416. F82E E6 9E         INC TPTR1
  4417. F830 E6 9F         INC TPTR2
  4418. F832 D0 EE         BNE WRTPLP2    ;$F822
  4419.  
  4420. WRTPH1
  4421. F834 20 54 FB      JSR SETBST
  4422. F837 A9 69         LDA #$69
  4423. F839 85 AB         STA RIPRTY
  4424. F83B 20 EA F8      JSR $F8EA
  4425. F63E A8            TAY
  4426. F83F 68            PLA
  4427. F840 85 AE         STA EAL
  4428. F842 68            PLA
  4429. F843 85 AF         STA EAL+1
  4430. F845 68            PLA
  4431. F646 85 C1         STA STAL
  4432. F848 68            PLA
  4433. F849 85 C2         STA STAL+1
  4434. F84B 98            TYA
  4435.  
  4436. WRTPEX
  4437. F84C 60            RTS
  4438.  
  4439.  
  4440. ;====================================================================
  4441. ; GETBFA - Get buffer address
  4442. ;
  4443. GETBFA
  4444. F84D A6 B2         LDX CBSTPT
  4445. F84F A4 B3         LDY CBSTPT+1
  4446. F851 C0 02         CPY #$02
  4447. F853 60            RTS
  4448.  
  4449.  
  4450. ;====================================================================
  4451. ; SETBST - Set buffer start/end pointers
  4452. ;
  4453. SETBST
  4454. F854 20 4D F8      JSR GETBFA
  4455. F857 8A            TXA
  4456. F858 85 C1         STA STAL
  4457. F85A 18            CLC
  4458. F85B 69 C0         ADC #$C0
  4459. F85D 85 AE         STA EAL
  4460. F85F 98            TYA
  4461. FB60 85 C2         STA STAL+1
  4462. F862 69 00         ADC #$00
  4463. F864 85 AF         STA EAL+1
  4464. F866 60            RTS
  4465.  
  4466.  
  4467. ;====================================================================
  4468. ; LOCSPH- Find specific tape header
  4469. ;
  4470. LOCSPH
  4471. F867 20 AF F7      JSR LOCTPH
  4472. F86A B0 1D         BCS LCSPEXC+1    ;$F889 return
  4473.  
  4474. F86C A0 05         LDY #$05
  4475. F86E 84 9F         STY TPTR2
  4476. F870 A0 00         LDY #$00
  4477. F872 64 9E         STY TPTR1
  4478.  
  4479. LCSPHLP
  4480. F874 C4 B7         CPY FNMLEN
  4481. F876 F0 10         BEQ LCSPEXC    ;$F888 return CLC
  4482.  
  4483. F878 B1 BB         LDA (FNPTR),Y
  4484. F87A A4 9F         LDY TPTR2
  4485. F87C D1 B2         CMP (CBSTPT),Y
  4486. F87E D0 E7         BNE LOCSPH
  4487.  
  4488. F8B0 E6 9E         INC TPTR1
  4489. F882 E6 9F         INC TPTR2
  4490. F884 A4 9E         LDY TPTR1
  4491. F886 D0 EC         BNE LCSPHLP    ;$F874
  4492.  
  4493. LCSPEXC
  4494. F888 18            CLC
  4495. F889 60            RTS
  4496.  
  4497.  
  4498. ;====================================================================
  4499. ; INCTPT - Bump tape pointer
  4500. ;
  4501. INCTPT
  4502. F88A 20 4D F8      JSR GETBFA
  4503. F88D E6 A6         INC BUFPNT
  4504. F88F A4 A6         LDY BUFPNT
  4505. F891 C0 C0         CPY #$C0
  4506. F893 60            RTS
  4507.  
  4508.  
  4509. ;====================================================================
  4510. ; PLAYMS - Print "Press Play on Tape"
  4511. ;
  4512. PLAYMS
  4513. F894 20 AB F8      JSR TPSTAT
  4514. F897 F0 1C         BEQ TPSTEX    ;$F8B5 exit
  4515.  
  4516. F899 A0 1B         LDY #$1B    ;"Press Play..."
  4517. F89B 20 E6 F1      JSR MSG
  4518.  
  4519. WTPLAY
  4520. F89E 20 4B F9      JSR TPSTOP
  4521. F8A1 20 AB F8      JSR TPSTAT
  4522. F8A4 D0 F8         BNE WTPLAY    ;$F89E wait for PLAY switch
  4523.  
  4524. F8A6 A0 6A         LDY #$6A    ;"OK"
  4525. F8A8 4C E6 F1      JMP MSG
  4526.  
  4527.  
  4528. ;====================================================================
  4529. ; TPSTAT - Check tape status
  4530. ;
  4531. TPSTAT
  4532. F8AB A9 40         LDA #%01000000    ;$40
  4533. F8AD 2C 1F 91      BIT D1ORAH    ;switch sense
  4534. F8B0 D0 03         BNE TPSTEX    ;$F8B5
  4535. F8B2 2C 1F 91      BIT D1ORAH
  4536.  
  4537. TPSTEX
  4538. F8B5 18            CLC
  4539. F8B6 60            RTS
  4540.  
  4541.  
  4542. ;====================================================================
  4543. ; RECDMS - Print "Press Record on Tape"
  4544. ;
  4545. RECDMS
  4546. F8B7 20 AB F8      JSR TPSTAT
  4547. F8BA F0 F9         BEQ TPSTEX    ;$F8B5
  4548.  
  4549. F8BC A0 2E         LDY #$2E    ;"Press Play & Record"
  4550. F8BE D0 DB         BNE WTPLAY-3    ;$F89B JSR MSG
  4551.  
  4552.  
  4553. ;====================================================================
  4554. ; TPREAD - Initiate tape read
  4555. ;
  4556. TPREAD
  4557. F8C0 A9 00         LDA #$00
  4558. F8C2 85 90         STA CSTAT
  4559. F8C4 85 93         STA IOFLG2
  4560.  
  4561. TPREAD1
  4562. F8C6 20 54 F8      JSR SETBST
  4563. F8C9 20 94 F8      JSR PLAYMS
  4564. F8CC B0 1F         BCS TPCODE-2    ;$F8ED
  4565.  
  4566. F8CE 78            SEI
  4567. F8CF A9 00         LDA #$00
  4568. F8D1 85 AA         STA RIDATA
  4569. F8D3 85 B4         STA BITTS
  4570. F8D5 85 B0         STA TPCON
  4571. F8D7 85 9E         STA TPTR1
  4572. F8D9 85 9F         STA TPTR2
  4573. F8DB 85 9C         STA BYTINF
  4574. F8DD A9 82         LDA #$82
  4575. F8DF A2 0E         LDX #$0E
  4576. F8E1 D0 11         BNE TPCODE1    ;$F8F4
  4577.  
  4578. ;====================================================================
  4579. ; TPWRIT - Initiate tape write
  4580. ;
  4581. TPWRIT
  4582. F8E3 20 54 F8      JSR SETBST
  4583. F8E6 A9 14         LDA #$14
  4584. F8EB 85 AB         STA RIPRTY
  4585. F8EA 20 B7 F8      JSR RECDMS
  4586. F8ED B0 68         BCS TPSTEX1    ;$F957
  4587. ;
  4588. ; TPCODE - Common tape code
  4589. ;
  4590. TPCODE
  4591. F8EF 78            SEI
  4592. F8F0 A9 A0         LDA #%10100000    ;$A0
  4593. F8F2 A2 08         LDX #%00001000    ;$08
  4594.  
  4595. TPCODE1
  4596. F8F4 A0 7F         LDY #%01111111    ;$7F
  4597. F8F6 8C 2E 91      STY D2IER
  4598. F8F9 8D 2E 91      STA D2IER
  4599. F8FC 20 60 F1      JSR SBIDLE
  4600. F8FF AD 14 03      LDA IRQVP    ;save current IRQ Vector
  4601. F902 8D 9F 02      STA TAPIRQ
  4602. F905 AD 15 03      LDA IRQVP+1
  4603. F908 8D A0 02      STA TAPIRQ+1
  4604. F90B 20 FB FC      JSR STOIRQ1    ;$FCFB .X=8 set tape IRQ vectors
  4605. F90E A9 02         LDA #$02
  4606. F910 85 BE         STA FSBLK
  4607. F912 20 DB FB      JSR NCHAR
  4608. F915 AD 1C 91      LDA D1PCR
  4609. F918 29 FD         AND #%11111101    ;$FD
  4610. F91A 09 0C         ORA #%00001100    ;$0C
  4611. F91C 8D 1C 91      STA D1PCR
  4612. F91F 85 C0         STA CAS1
  4613. F921 A2 FF         LDX #$FF    ;setup loop
  4614. F923 A0 FF         LDY #$FF
  4615.  
  4616. TPCDLP1
  4617. F925 88            DEY
  4618. F926 D0 FD         BNE TPCDLP1    ;$F925
  4619.  
  4620. F928 CA            DEX
  4621. F929 D0 F8         BNE TPCDLP1-2    ;$F923 outside loop
  4622. F92B 8D 29 91      STA D2TM2H
  4623. F92E 58            CLI
  4624.  
  4625. TPCDLP2
  4626. F92F AD A0 02      LDA TAPIRQ+1
  4627. F932 CD 15 03      CMP IRQVP+1
  4628. F935 18            CLC
  4629. F936 F0 1F         BEQ TPSTEX-5    ;$F957
  4630.  
  4631. F938 20 4B F9      JSR TPSTOP
  4632. F93B AD 2D 91      LDA D2IFR
  4633. F93E 29 40         AND #%01000000    ;$40
  4634. F940 F0 ED         BEQ TPCDLP2    ;$F92F
  4635.  
  4636. F942 AD 14 91      LDA D1TM1L
  4637. F945 20 34 F7      JSR IUDTIM
  4638. F948 4C 2F F9      JMP TPCDLP2    ;$F92F
  4639.  
  4640.  
  4641.  
  4642.  
  4643. ;====================================================================
  4644. ; TPSTOP - Check tape stop
  4645. ;
  4646. TPSTOP
  4647. F94B     JSR (STOPVP)    ;STOP
  4648. F94E 18            CLC
  4649. F94F D0 0B         BNE TPSTEX    ;$F95C
  4650.  
  4651. F951 20 CF FC      JSR RESIRQ
  4652. F954 38            SEC
  4653. F955 68            PLA
  4654. F956 68            PLA
  4655.  
  4656. TPSPEX1
  4657. F957 A9 00         LDA #$00
  4658. F959 8D A0 02      STA TAPIRQ+1
  4659.  
  4660. TPSTEX
  4661. F95C 60            RTS
  4662.  
  4663.  
  4664. ;====================================================================
  4665. ; SETRDT - Set read timing
  4666. ;
  4667. SETRDT
  4668. F95D 86 B1         STX TPCON+1
  4669. F95F A5 B0         LDA TPCON
  4670. F961 0A            ASL
  4671. F962 0A            ASL
  4672. F963 18            CLC
  4673. F964 65 B0         ADC TPCON
  4674. F966 18            CLC
  4675. F967 65 B1         ADC TPCON+1
  4676. F969 85 B1         STA TPCON+1
  4677. F96B A9 00         LDA #$00
  4678. F96D 24 B0         BIT TPCON
  4679. F96F 30 01         BMI RDTSK1    ;$F972
  4680.  
  4681. F971 2A            ROL
  4682. F972 06 B1         ASL TPCON+1
  4683.  
  4684. RDTSK1
  4685. F974 2A            ROL
  4686. F975 06 B1         ASL TPCON+1
  4687. F977 2A            ROL
  4688. F978 AA            TAX
  4689.  
  4690. RDTLP1
  4691. F979 AD 28 91      LDA D2TM2L
  4692. F97C C9 15         CMP #$15
  4693. F97E 90 F9         BCC RDTLP1    ;$F979
  4694.  
  4695. F980 65 B1         ADC TPCON+1
  4696. F982 8D 24 91      STA D2TM1L
  4697. F985 8A            TXA
  4698. F986 6D 29 91      ADC D2TM2H
  4699. F989 8D 25 91      STA D2TM1L+1
  4700. F98C 58            CLI
  4701. F98D 60            RTS
  4702.  
  4703.  
  4704. ;====================================================================
  4705. ; RDTPBT - Read tape bits
  4706. ;
  4707. RDTPBT
  4708. F98E AE 29 91      LDX D2TM2H
  4709. F991 A0 FF         LDY #$FF
  4710. F993 98            TYA
  4711. F994 ED 28 91      SBC D2TM2L
  4712. F997 EC 29 91      CPX D2TM2H
  4713. F99A D0 F2         BNE RDTPBT
  4714.  
  4715. F99C 86 B1         STX TPCON+1
  4716. F99E AA            TAX
  4717. F99F 8C 28 91      STY D2TM2L
  4718. F9A2 8C 29 91      STY D2TM2H
  4719. F9A5 98            TYA
  4720. F9A6 E5 B1         SBC TPCON+1
  4721. F9A8 86 B1         STX TPCON+1
  4722. F9AA 4A            LSR
  4723. F9AB 66 B1         ROR TPCON+1
  4724. F9AD 4A            LSR
  4725. F9AE 66 B1         ROR TPCON+1
  4726. F9B0 A5 B0         LDA TPCON
  4727. F9B2 18            CLC
  4728. F9B3 69 3C         ADC #$3C
  4729. F9B5 2C 21 91      BIT D2ORA
  4730. F9B8 C5 B1         CMP TPCON+1
  4731. F9BA B0 4A         BCS RDTP4    ;$FA06
  4732.  
  4733. F9BC A6 9C         LDX BYTINF
  4734. F9BE F0 03         BEQ $+3    ;F9C3
  4735. F9C0 4C AD FA      JMP STORTC    ;save tape IRQs
  4736.  
  4737. F9C3 A6 A3         LDX SBITCF
  4738. F9C5 30 1B         BMI RDTP1    ;$F9E2
  4739.  
  4740. F9C7 A2 00         LDX #$00
  4741. F9C9 69 30         ADC #$30
  4742. F9CB 65 B0         ADC TPCON
  4743. F9CD C5 B1         CMP TPCON+1
  4744. F9CF B0 1C         BCS RDTP2    ;$F9ED
  4745.  
  4746. F9D1 E8            INX
  4747. F9D2 69 26         ADC #$26
  4748. F9D4 65 B0         ADC TPCON
  4749. F9D6 C5 B1         CMP TPCON+1
  4750. F9D8 B0 17         BCS RDTP3    ;$F9F1
  4751.  
  4752. F9DA 69 2C         ADC #$2C
  4753. F9DC 65 B0         ADC TPCON
  4754. F9DE C5 B1         CMP TPCON+1
  4755. F9E0 90 03         BCC RDTPLP1    ;$F9E5
  4756.  
  4757. RDTP1
  4758. F9E2 4C 60 FA      JMP RDTP6A    ;$FA60
  4759.  
  4760. RDTPLP1
  4761. F9E5 A5 B4         LDA BITTS
  4762. F9E7 F0 1D         BEQ RDTP4    ;$FA06
  4763.  
  4764. F9E9 85 AB         STA RIPRTY
  4765. F9EB D0 19         BNE RDTP4    ;$FA06
  4766.  
  4767. RDTP2
  4768. F9ED E6 A9         INC RINONE
  4769. F9EF B0 02         BCS RDTP3A    ;$F9F3
  4770.  
  4771. RDTP3
  4772. F9F1 C6 A9         DEC RINONE
  4773.  
  4774. RDTP3A
  4775. F9F3 38            SEC
  4776. F9F4 E9 13         SBC #$13
  4777. F9F6 E5 B1         SBC TPCON+1
  4778. F9FB 65 92         ADC SVXT
  4779. F9FA 85 92         STA SVXT
  4780. F9FC A5 A4         LDA CYCLE
  4781. F9FE 49 01         EOR #$01
  4782. FA00 85 A4         STA CYCLE
  4783. FA02 F0 21         BEQ RDTP3C    ;$FA25
  4784.  
  4785. FA04 86 D7         STX LASTKY
  4786. FA06 A5 B4         LDA BITTS
  4787. FA08 F0 18         BEQ RDTPEX1    ;$FA22
  4788.  
  4789. FA0A 2C 2D 91      BIT D2IFR
  4790. FA0D 50 13         BVC RDTPEX1    ;$FA22
  4791.  
  4792. FA0F A9 00         LDA #$00
  4793. FA11 85 A4         STA CYCLE
  4794. FA13 A5 A3         LDA SBITCF
  4795. FA15 10 30         BPL RDTP6    ;$FA47
  4796. FA17 30 C9         BMI RDTP1    ;$F9E2
  4797.  
  4798. RDTP3B
  4799. FA19 A2 A6         LDX #$A6
  4800. FA1B 20 5D F9      JSR SETRDT
  4801. FA1E A5 9B         LDA TPRTY
  4802. FA20 D0 C3         BNE RDTPLP1    ;$F9E5
  4803.  
  4804. RDTPEX1
  4805. FA22 4C 56 FF      JMP EOI
  4806.  
  4807. RDTP3C
  4808. FA25 A5 92         LDA SVXT
  4809. FA27 F0 07         BEQ RDTP5A    ;$FA30
  4810. FA29 30 03         BMI RDTP5    ;$FA2E
  4811.  
  4812. FA2B C6 B0         DEC TPCON
  4813. FA2D 2C     .db $2C    ;bit $b0e6
  4814.  
  4815. RDTP5
  4816. FA2E E6 B0      INC TPCON1
  4817.  
  4818. RDTP5A    
  4819. FA30 A9 00         LDA #$00
  4820. FA32 85 92         STA SVXT
  4821. FA34 E4 D7         CPX LASTKY
  4822. FA36 D0 0F         BNE RDTP6    ;$FA47
  4823.  
  4824. FA38 8A            TXA
  4825. FA39 D0 AA         BNE RDTPLP1    ;$F9E5
  4826.  
  4827. FA3B A5 A9         LDA RINONE
  4828. FA3D 30 C7         BMI RDTP4    ;$FA06
  4829.  
  4830. FA3F C9 10         CMP #$10
  4831. FA41 90 C3         BCC RDTP4    ;$FA06
  4832.  
  4833. FA43 85 96         STA EOTFLG
  4834. FA45 B0 BF         BCS RDTP4    ;$FA06
  4835.  
  4836. RDTP6
  4837. FA47 8A            TXA
  4838. FA48 45 9B         EOR TPRTY
  4839. FA4A 85 9B         STA TPRTY
  4840. FA4C A5 B4         LDA BITTS
  4841. FA4E F0 D2         BEQ RDTPEX1    ;$FA22
  4842.  
  4843. FA50 C6 A3         DEC SBITCF
  4844. FA52 30 C5         BMI RDTP3B    ;$FA19
  4845.  
  4846. FA54 46 D7         LSR LASTKY
  4847. FA56 66 BF         ROR MYCH
  4848. FA58 A2 DA         LDX #$DA
  4849. FA5A 20 5D F9      JSR SETRDT
  4850. FA5D 4C 56 FF      JMP EOI
  4851.  
  4852. RDTP6A
  4853. FA60 A5 96         LDA EOTFLG
  4854. FA62 F0 04         BEQ RDTP7    ;$FA68
  4855.  
  4856. FA64 A5 B4         LDA BITTS
  4857. FA66 F0 04         BEQ RDTP8    ;$FA6C
  4858.  
  4859. RDTP7
  4860. FA68 A5 A3         LDA SBITCF
  4861. FA6A 10 85         BPL RDTP3    ;$F9F1
  4862.  
  4863. RDTP8
  4864. FA6C 46 B1         LSR TPCON+1
  4865. FA6E A9 93         LDA #$93
  4866. FA70 38            SEC
  4867. FA71 E5 B1         SBC TPCON+1
  4868. FA73 65 B0         ADC TPCON
  4869. FA75 0A            ASL
  4870. FA76 AA            TAX
  4871. FA77 20 5D F9      JSR SETRDT
  4872. FA7A E6 9C         INC BYTINF
  4873. FA7C A5 B4         LDA BITTS
  4874. FA7E D0 11         BNE RDTP9    ;$FA91
  4875.  
  4876. FA80 A5 96         LDA EOTFLG
  4877. FA82 F0 26         BEQ RDTPEX2    ;$FAAA
  4878.  
  4879. FA84 85 A8         STA TPRWRE
  4880. FA86 A9 00         LDA #$00
  4881. FA88 85 96         STA EOTFLG
  4882. FA8A A9 C0         LDA #%11000000    ;$C0
  4883. FA8C 8D 2E 91      STA D2IER
  4884. FA8F 85 B4         STA BITTS
  4885.  
  4886. RDTP9
  4887. FA91 A5 96         LDA EOTFLG
  4888. FA93 85 B5         STA NXTBIT
  4889. FA95 F0 09         BEQ RDTP10    ;$FAA0
  4890.  
  4891. FA97 A9 00         LDA #$00
  4892. FA99 85 B4         STA BITTS
  4893. FA9B A9 40         LDA #%01000000    ;$40
  4894. FA9D 8D 2E 91      STA D2IER
  4895.  
  4896. RDTP10
  4897. FAA0 A5 BF         LDA MYCH
  4898. FAA2 85 BD         STA ROPRTY
  4899. FAA4 A5 A8         LDA TPRWRE
  4900. FAA6 05 A9         ORA RINONE
  4901. FAA8 85 B6         STA RODATA
  4902.  
  4903. RDTPEX2
  4904. FAAA 4C 56 FF      JMP EOI
  4905.  
  4906.  
  4907. ;====================================================================
  4908. ; STORTC - Store tape characters
  4909. ;
  4910. STORTC
  4911. FAAD 20 DE FB      JSR NCHAR
  4912. FAB0 85 9C         STA BYTINF
  4913. FAB2 A2 DA         LDX #$DA
  4914. FAB4 20 5D F9      JSR SETRDT
  4915. FAB7 A5 BE         LDA FSBLK
  4916. FAB9 F0 02         BEQ $+2    ;FABD
  4917.  
  4918. FABB 85 A7         STA INBIT
  4919. FABD A9 0F         LDA #$0F
  4920. FABF 24 AA         BIT RIDATA
  4921. FAC1 10 17         BPL $FADA
  4922.  
  4923. FAC3 A5 B5         LDA NXTBIT
  4924. FAC5 D0 0C         BNE $FAD3
  4925.  
  4926. FAC7 A6 BE         LDX FSBLK
  4927. FAC9 CA            DEX
  4928. FACA D0 0B         BNE STOCHEX1    ;$FAD7
  4929.  
  4930. FACC A9 08         LDA #$08
  4931. FACE 20 6A FE      JSR $FE6A
  4932. FAD1 D0 04         BNE STOCHEX1
  4933.  
  4934. FAD3 A9 00         LDA #$00
  4935. FAD5 85 AA         STA RIDATA
  4936.  
  4937. STOCHEX1
  4938. FAD7 4C 56 FF      JMP EOI
  4939.  
  4940. FADA 70 31         BVS $FB0D
  4941. FADC D0 18         BNE $FAF6
  4942.  
  4943. FADE A5 B5         LDA NXTBIT
  4944. FAE0 D0 F5         BNE STOCHEX1
  4945.  
  4946. FAE2 A5 B6         LDA RODATA
  4947. FAE4 D0 F1         BNE STOCHEX1
  4948.  
  4949. FAE6 A5 A7         LDA INBIT
  4950. FAE8 4A            LSR
  4951. FAE9 A5 BD         LDA ROPRTY
  4952. FAEB 30 03         BMI $FAF0
  4953. FAED 93 18         BCC $FB07
  4954.  
  4955. FAEF 18            CLC
  4956. FAF0 B0 15         BCS $FB07
  4957. FAF2 29 0F         AND #%00001111    ;$0F
  4958. FAF4 85 AA         STA RIDATA
  4959. FAF6 C6 AA         DEC RIDATA
  4960. FAF8 D0 DD         BNE STOCHEX1
  4961.  
  4962. FAFA A9 40         LDA #$40
  4963. FAFC 85 AA         STA RIDATA
  4964. FAFE 20 D2 FB      JSR RSTTPP
  4965. FB01 A9 00         LDA #$00
  4966. FB03 65 AB         STA RIPRTY
  4967. FB05 F0 D0         BEQ STOCHEX1
  4968.  
  4969. FB07 A9 80         LDA #$80
  4970. FB09 85 AA         STA RIDATA
  4971. FB0B D0 CA         BNE STOCHEX1
  4972.  
  4973. FB0D A5 B5         LDA NXTBIT
  4974. FB0F F0 0A         BEQ $FB1B
  4975.  
  4976. FB11 A9 04         LDA #$04
  4977. FB13 20 6A FE      JSR $FE6A
  4978. FB16 A9 00         LDA #$00
  4979. FB18 4C 97 FB      JMP $FB97
  4980.  
  4981. FB1B 20 11 FD      JSR CKWRPT
  4982. FB1E 90 03         BCC $FB23
  4983. FB20 4C 95 FB      JMP $FB95
  4984.  
  4985. FB23 A6 A7         LDX INBIT
  4986. FB25 CA            DEX
  4987. FB26 F0 2D         BEQ $FB55
  4988.  
  4989. FB28 A5 93         LDA IOFLG2
  4990. FB2A F0 0C         BEQ $FB38
  4991.  
  4992. FB2C A0 00         LDY #$00
  4993. FB2E A5 BD         LDA ROPRTY
  4994. FB30 D1 AC         CMP (SAL),Y
  4995. FB32 F0 04         BEQ $FB38
  4996.  
  4997. FB34 A9 01         LDA #$01
  4998. FB36 85 B6         STA RODATA
  4999. FB38 A5 B6         LDA RODATA
  5000. FB3A F0 4B         BEQ $FB87
  5001.  
  5002. FB3C A2 3D         LDX #$3D
  5003. FB3E E4 9E         CPX TPTR1
  5004. FB40 90 3E         BCC $FB80
  5005.  
  5006. FB42 A6 9E         LDX TPTR1
  5007. FB44 A5 AD         LDA SAL+1
  5008. FB46 9D 01 01      STA FBUFFR+1,X
  5009. FB49 A5 AC         LDA SAL
  5010. FB4B 9D 00 01      STA FBUFFR,X
  5011. FB4E E8            INX
  5012. FB4F E8            INX
  5013. FB50 86 9E         STX TPTR1
  5014. FB52 4C 87 FB      JMP $FB87
  5015.  
  5016. FB55 A6 9F         LDX TPTR2
  5017. FB57 E4 9E         CPX TPTR1
  5018. FB59 F0 35         BEQ $FB90
  5019.  
  5020. FB5B A5 AC         LDA SAL
  5021. FB5D DD 00 01      CMP FBUFFR,X
  5022. FB60 D0 2E         BNE $FB90
  5023.  
  5024. FB62 A5 AD         LDA SAL+1
  5025. FB64 DD 01 01      CMP FBUFFR+1,X
  5026. FE67 D0 27         BNE $FB90
  5027.  
  5028. FB69 E6 9F         INC TPTR2
  5029. FB6B E6 9F         INC TPTR2
  5030. FB6D A5 93         LDA IOFLG2
  5031. FB6F F0 0B         BEQ $FB7C
  5032.  
  5033. FB71 A5 BD         LDA ROPRTY
  5034. FB73 A0 00         LDY #$00
  5035. FB75 D1 AC         CMP (SAL),Y
  5036. FB77 F0 17         BEQ $FB90
  5037.  
  5038. FB79 C8            INY
  5039. FB7A 84 B6         STY RODATA
  5040. FB7C A5 B6         LDA RODATA
  5041. FB7E F0 07         BEQ $FB87
  5042.  
  5043. FB80 A9 10         LDA #$10
  5044. FB82 20 6A FE      JSR $FE6A
  5045. FB85 D0 09         BNE $FB90
  5046.  
  5047. FB87 A5 93         LDA IOFLG2
  5048. FB89 D0 05         BNE $FB90
  5049.  
  5050. FB8B A8            TAY
  5051. FB8C A5 BD         LDA ROPRTY
  5052. FB8E 91 AC         STA (SAL),Y
  5053. FB90 20 1B FD      JSR INCRDP
  5054. FB93 D0 3A         BNE $FBCF
  5055.  
  5056. FB95 A9 80         LDA #$80
  5057.  
  5058.  
  5059. FB97 65 AA         STA RIDATA
  5060. FB99 A6 BE         LDX FSBLK
  5061. FB9B CA            DEX
  5062. FB9C 30 02         BMI $FBA0
  5063.  
  5064. FB9E 86 BE         STX FSBLK
  5065. FBA0 C6 A7         DEC INBIT
  5066. FBA2 F0 08         BEQ $FBAC
  5067.  
  5068. FBA4 A5 9E         LDA TPTR1
  5069. FBA6 D0 27         BNE $FBCF
  5070.  
  5071. FBA8 85 BE         STA FSBLK
  5072. FBAA F0 23         BEQ $FBCF
  5073.  
  5074. FEAC 20 CF FC      JSR RESIRQ
  5075. FBAF 20 D2 FB      JSR RSTTPP
  5076. FBB2 A0 00         LDY #$00
  5077. FBB4 84 AB         STY RIPRTY
  5078. FBB6 E1 AC         LDA (SAL),Y
  5079. FBB8 45 AB        EOR RIPRTY
  5080. FBBA 85 AB         STA RIPRTY
  5081. FBBC 20 1B FD      JSR INCRDP
  5082. FBBF 20 11 FD      JSR CKWRPT
  5083. FBC2 90 F2         BCC $FBB6
  5084.  
  5085. FBC4 A5 AB         LDA RIPRTY
  5086. FBC6 45 BD         EOR ROPRTY
  5087. FBC8 F0 05         BEQ $FBCF
  5088.  
  5089. FBCA A9 20         LDA #$20
  5090. FBCC 20 6A FE      JSR ISETMS1    ;$FE6A
  5091. FBCF 4C 56 FF      JMP EOI
  5092.  
  5093.  
  5094. ;====================================================================
  5095. ; RSTTPP - Reset tape pointer
  5096. ;
  5097. RSTTPP
  5098. FBD2 A5 C2         LDA STAL+1
  5099. FBD4 85 AD         STA SAL+1
  5100. FBD6 A5 C1         LDA STAL
  5101. FBD8 85 AC         STA SAL
  5102. FBDA 60            RTS
  5103.  
  5104.  
  5105. ;====================================================================
  5106. ; NCHAR - New character setup
  5107. ;
  5108. NCHAR
  5109. FBDB A9 08         LDA #$08
  5110. FBDD 85 A3         STA SBITCF
  5111. FBDF A9 00         LDA #$00
  5112. FBE1 85 A4         STA  CYCLE
  5113. FBE3 85 AB         STA RIPRTY
  5114. FBE5 85 9B         STA TPRTY
  5115. FBE7 65 A9         STA RINONE
  5116. FBE9 60            RTS
  5117.  
  5118.  
  5119. ;====================================================================
  5120. ; TONE - Send tone to tape
  5121. ;
  5122. TONE
  5123. FBEA A5 BD         LDA ROPRTY
  5124. FBEC 4A            LSR    ;determine tone length
  5125. FBED A9 60         LDA #$60    ;set short tone timing
  5126. FBEF 90 02         BCC TONE1    ;$FBF3 C=clear, 0
  5127.  
  5128. TONEA
  5129. FBF1 A9 B0         LDA #$B0    ;set long tone timine
  5130.  
  5131. TONE1
  5132. FBF3 A2 00         LDX #$00
  5133. FBF5 8D 28 91      STA D2TM2L
  5134. FBF8 8E 29 91      STX D2TM2H
  5135. FBFB AD 20 91      LDA D2ORB
  5136. FBFE 49 0B         EOR #%00001000    ;$08
  5137. FC00 8D 20 91      STA D2ORB
  5138. FC03 29 08         AND #%00001011    ;$0B
  5139. FC05 60            RTS
  5140.  
  5141.  
  5142. ;====================================================================
  5143. ; TWRDTA - Write data to tape
  5144. ;
  5145. TWRDTA
  5146. FC06 38            SEC
  5147. FC07 66 AD         ROR SAL+1
  5148. FC09 30 3C         BMI TWRDEX1
  5149.  
  5150. FC0B A5 A8         LDA TPRWRE
  5151. FC0D D0 12         BNE TWRD1    ;$FC21
  5152.  
  5153. FC0F A9 10         LDA #$10
  5154. FC11 A2 01         LDX #$01
  5155. FC13 20 F5 FB      JSR TONE1+2    ;$FBF5
  5156. FC16 D0 2F         BNE TWRDEX1
  5157.  
  5158. FC18 E6 A8         INC TPRWRE
  5159. FC1A A5 AD         LDA SAL+1
  5160. FC1C 10 29         BPL TWRDEX1
  5161. FC1E 4C 95 FC      JMP WRLEDR
  5162.  
  5163. TWRD1
  5164. FC21 A5 A9         LDA RINONE
  5165. FC23 D0 09         BNE TWRD2+1    ;$FC2B
  5166.  
  5167. FC25 20 F1 FB      JSR TONEA    ;$FBF1
  5168. FC28 D0 1D         BNE TWRDEX1
  5169.  
  5170. TWRD2
  5171. FC2A E6 A9         INC RINONE    ;LDA #$D0
  5172. FC2C D0 19         BNE TWRDEX1    ;ORA Y
  5173.  
  5174. FC2E 20 EA FB      JSR TONE
  5175. FC31 D0 14         BNE TWRDEX1
  5176.  
  5177. FC33 A5 A4         LDA CYCLE
  5178. FC35 49 01         EOR #$01
  5179. FC37 85 A4         STA CYCLE
  5180. FC39 F0 0F         BEQ TWRD3    ;$FC4A
  5181.  
  5182. FC3B A5 BD         LDA ROPRTY
  5183. FC3D 49 09         EOR #$01
  5184. FC3F 85 BD         STA ROPRTY
  5185. FC41 29 01         AND #$01
  5186. FC43 45 9B         EOR TPRTY
  5187. FC45 85 9B         STA TPRTY
  5188.  
  5189. TWRDEX1
  5190. FC47 4C 56 FF      JMP EOI
  5191.  
  5192. TWRD3
  5193. FC4A 46 BD         LSR ROPRTY
  5194. FC4C C6 A3         DEC SBITCF
  5195. FC4E A5 A3         LDA SBITCF
  5196. FC50 F0 3A         BEQ TWRD6    ;$FC8C
  5197. FC52 10 F3         BPL TWRDEX1
  5198.  
  5199. FC54 20 DB FB      JSR NCHAR
  5200. FC57 58            CLI
  5201. FC58 A5 A5         LDA CNTDN
  5202. FC5A F0 12         BEQ TWRD4    ;$FC6E
  5203.  
  5204. FC5C A2 00         LDX #$00
  5205. FC5E 86 D7         STX LASTKY
  5206. FC60 C6 A5         DEC CNTDN
  5207. FC62 A6 BE         LDX FSBLK
  5208. FC64 E0 02         CPX #$02
  5209. FC66 D0 02         BNE $+2    ;FC6A
  5210.  
  5211. FC68 09 80         ORA #%10000000    ;$80
  5212. FC6A 85 BD         STA ROPRTY    ;$BD
  5213. FC6C D0 D9         BNE TWRDEX1
  5214.  
  5215. TWRD4
  5216. FC6E 20 11 FD      JSR CKWRPT
  5217. FC71 90 0A         BCC TWRD5    ;$FC7D
  5218. FC73 D0 91         BNE TWRDTA
  5219.  
  5220. FC75 E6 AD         INC SAL+1
  5221. FC77 A5 D7         LDA LASTKY
  5222. FC79 85 BD         STA ROPRTY
  5223. FC7B B0 CA         BCS TWRDEX1
  5224.  
  5225. TWRD5
  5226. FC7D A0 00         LDY #$00
  5227. FC7F B1 AC         LDA (SAL),Y
  5228. FC81 85 BD         STA ROPRTY
  5229. FC83 45 D7         EOR LASTKY
  5230. FC85 85 D7         STA LASTKY
  5231. FC87 20 1B FD      JSR INCRDP
  5232. FCBA D0 BB         BNE TWRDEX1
  5233.  
  5234. TWRD6
  5235. FC8C A5 9B         LDA TPRTY
  5236. FCBE 49 01         EOR #$01
  5237. FC90 85 BD         STA ROPRTY
  5238.  
  5239. TPEOI
  5240. FC92 4C 56 FF      JMP EOI
  5241.  
  5242.  
  5243. ;====================================================================
  5244. ; WRLEDR - Write tape leader
  5245. ;
  5246. WRLEDR
  5247. FC95 C6 BE         DEC FSBLK
  5248. FC97 D0 03         BNE WRLDR1    ;$FC9C
  5249.  
  5250. FC99 20 08 FD      JSR NOMOTR
  5251.  
  5252. WRLDR1
  5253. FC9C A9 50         LDA #$50
  5254. FC9E 85 A7         STA INBIT
  5255. FCA0 A2 08         LDX #$08
  5256. FCA2 78            SEI
  5257. FCA3 20 FB FC      JSR STOIRQ1    ;$FCFB tape IRQs
  5258. FCA6 D0 EA         BNE TPEOI    ;$FC92
  5259.  
  5260. FCA8 A9 78         LDA #$78
  5261. FCAA 20 F3 FB      JSR TONE1    ;$FBF3
  5262. FCAD D0 E3         BNE TPEOI    ;$FC92
  5263.  
  5264. FCAF C6 A7         DEC INBIT
  5265. FCB1 D0 DF         BNE TPEOI    ;$FC92
  5266.  
  5267. FCB3 20 DB FB      JSR NCHAR
  5268. FCB6 C6 AB         DEC RIPRTY
  5269. FCB8 10 D8         BPL TPEOI    ;$FC92
  5270.  
  5271. FCBA A2 0A         LDX #$0A
  5272. FCBC 20 FB FC      JSR STOIRQ1    ;$FCFB
  5273. FCBF 58            CLI
  5274. FCC0 E6 AB         INC RIPRTY
  5275. FCC2 A5 BE         LDA FSBLK
  5276. FCC4 F0 30         BEQ STOIRQ    ;$FCF6
  5277.  
  5278. FCC6 20 D2 FB      JSR RSTTPP
  5279. FCC9 A2 09         LDX #$09
  5280. FCCB 86 A5         STX CNTDN
  5281. FCCD D0 85         BNE $FC54
  5282. ;
  5283. ; RESIRQ - Restore normal IRQ
  5284. ;
  5285. RESIRQ
  5286. FCCF 08            PHP
  5287. FCD0 78            SEI
  5288. FCD1 20 08 FD      JSR NOMOTR
  5289. FCD4 A9 7F         LDA #%01111111    ;$7F
  5290. FCD6 8D 2E 91      STA D2IER
  5291. FCD9 A9 F7         LDA #%01111111    ;$F7
  5292. FCDB 8D 20 91      STA D2ORB
  5293. FCDE A9 40         LDA #%01000000    ;$40
  5294. FCE0 8D 2B 91      STA D2ACR
  5295. FCE3 20 39 FE      JSR ENABTM
  5296. FCE6 AD A0 02      LDA TAPIRQ+1
  5297. FCE9 F0 09         BEQ RSIRQEX    ;$FCF4
  5298.  
  5299. FCEB 8D 15 03      STA IRQVP+1
  5300. FCEE AD 9F 02      LDA TAPIRQ
  5301. FCF1 8D 14 03      STA IRQVP
  5302.  
  5303. RSIRQEX
  5304. FCF4 28            PLP
  5305. FCF5 60            RTS
  5306.  
  5307.  
  5308. ;====================================================================
  5309. ; STOIRQ - Set IRQ vector
  5310. ;
  5311. STOIRQ
  5312. FCF6 20 CF FC      JSR RESIRQ
  5313. FCF9 F0 97         BEQ TPEOI    ;$FC92
  5314. STOIRQ1
  5315. FCFB BD E9 FD      LDA RATS3,X    ;$FDE9,X    ;TPVECS
  5316. FCFE 8D 14 03      STA IRQVP
  5317. FD01 BD EA FD      LDA RATS3+1,X    ;$FDEA,X
  5318. FD04 8D 15 03      STA IRQVP+1
  5319. FD07 60            RTS
  5320.  
  5321.  
  5322. ;====================================================================
  5323. ; NOMOTR - Kill tape motor
  5324. ;
  5325. NOMOTR
  5326. FD08 AD 1C 91      LDA D1PCR
  5327. FD0B 09 0E         ORA #%00001110    ;$0E
  5328. FD0D 8D 1C 91      STA D1PCR
  5329. FD10 60            RTS
  5330.  
  5331.  
  5332. ;====================================================================
  5333. ; CKWRPT - Check read/write pointer
  5334. ;
  5335. CKWRPT
  5336. FD11 38            SEC
  5337. FD12 A5  AC        LDA SAL
  5338. FD14 E5  AE        SBC EAL
  5339. FD16 A5  AD        LDA SAL+1
  5340. FD18 E5  AF        SBC EAL+1
  5341. FD1A 60            RTS
  5342.  
  5343.  
  5344. ;====================================================================
  5345. ; INCRDP - Bump read/write pointer
  5346. ;
  5347. INCRDP
  5348. FD1B E6  AC        INC SAL
  5349. FD1D D0  02        BNE INCRSK    ;$FD21
  5350.  
  5351. FD1F E6  AD        INC SAL+1
  5352.  
  5353. INCRSK
  5354. FD21 60            RTS
  5355.  
  5356.  
  5357. ;####################################################################
  5358. ; Power-on RESET entry
  5359. ;####################################################################
  5360. RESET
  5361. FD22 A2 FF         LDX #$FF
  5362. FD24 78            SEI
  5363. FD25 9A            TXS
  5364. FD26 D8            CLD
  5365. FD27 20 3F FD      JSR SCNROM
  5366. FD2A D0 03         BNE SKIPA0    ;$FD2F
  5367.  
  5368. FD2C 6C 00 A0      JMP (A0BASE)
  5369.  
  5370. SKIPA0
  5371. FD2F 20 8D FD      JSR RAMTAS
  5372. FD32 20 52 FD      JSR RESTOR
  5373. FD35 20 F9 FD      JSR IOINIT
  5374. FD38 20 18 E5      JSR CINT1
  5375. FD3B 58            CLI
  5376. FD3C 6C 00 C0      JMP (BASICRB)
  5377.  
  5378.  
  5379. ;====================================================================
  5380. ; SCNROM - Scan ROM areas for Autostart ROM signature
  5381. ;
  5382. SCNROM
  5383. FD3F A2 05         LDX #$05
  5384.  
  5385. SCNLOOP
  5386. FD41 BD 4C FD      LDA SCANEX,X    ;$FD4C,X
  5387. FD44 DD 03 A0      CMP $A003,X
  5388. FD47 D0 03         BNE SCANEX    ;$FD4C
  5389.  
  5390. FD49 CA            DEX
  5391. FD4A D0 F5         BNE SCNLOOP    ;$FD41
  5392.  
  5393. SCANEX
  5394. FD4C 60            RTS
  5395. ;
  5396. ; ROMSIG - Autostart ROM signature
  5397. ;
  5398. ROMSIG
  5399. FD4D .db 'A0', $C3, $C2, $CD        ;"A0CBM"
  5400.  
  5401.  
  5402. ;====================================================================
  5403. ; IRESTR - Restore KERNEL vectors (internal)
  5404. ;
  5405. IRESTR
  5406. FD52 A2  6D        LDX FIXUP2    ;#$6D
  5407. FD54 A0  FD        LDY FIXUP2+1    ;#$FD $FD6D KERNEL vecs
  5408. FD56 18            CLC
  5409. ;
  5410. ; IVECTR - Change vectors for user
  5411. ;
  5412. IVECTR
  5413. FD57 86 C3         STX MEMUSS
  5414. FD59 84 C4        STY MEMUSS+1
  5415. FD5B A0 1F         LDY #$1F
  5416.  
  5417. VECLOOP
  5418. FD5D B9 14 03      LDA IRQVP,Y
  5419. FD60 B0 02         BCS VECSK    ;$FD64
  5420.  
  5421. FD62 B1 C3         LDA (MEMUSS),Y
  5422.  
  5423. VECSK
  5424. FD64 91 C3         STA (MEMUSS),Y
  5425. FD66 99 14 03      STA IRQVP,Y
  5426. FD69 88            DEY
  5427. FD6A 10 F1         BPL VECLOOP    ;$FD5D
  5428. FD6C 60            RTS
  5429.  
  5430. ;
  5431. ;KERNEL Vectors
  5432. ;
  5433. KNRLSV
  5434. FD6D .dw $EABF, $FED2, $FEAD, $F40A
  5435. FD75 .dw $F34A, $F2C7, $F309, $F3F3
  5436. FD7D .dw $F20E, $F27A, $F770, $F1F5 
  5437. FD85 .dw $F3EF, $FED2, $F549, $F685
  5438.  
  5439.  
  5440. ;====================================================================
  5441. ; RAMTAS - Initialize system contents
  5442. ;
  5443. RAMTAS
  5444. FD8D A9 00         LDA #$00
  5445. FD8F AA            TAX
  5446. FD90 95 00         STA USRPOK,X
  5447. FD92 9D 00 02      STA BUF,X
  5448. FD95 9D 00 03      STA ERRVPT,X
  5449. FD98 E8            INX
  5450. FD99 D0 F5         BNE $FD90
  5451.  
  5452. FD9B A2 3C         LDX #$3C
  5453. FD9D A0 03         LDY #$03
  5454. FD9F 86 B2         STX CBSTPT
  5455. FDA1 64 B3         STY CBSTPT+1
  5456. FDA3 85 C1         STA STAL
  5457. FDA5 85 97         STA REGSAV
  5458. FDA7 8D 81 02      STA OSSTAR
  5459. FDAA A8            TAY
  5460. FDAB A9 04         LDA #$04
  5461. FDAD 85 C2         STA STAL+1
  5462.  
  5463. RAMTASLP1
  5464. FDAF E6 C1         INC STAL
  5465. FDB1 D0 02         BNE RAMTAS1    ;$FDB5
  5466.  
  5467. FDB3 E6 C2         INC STAL+1
  5468.  
  5469. RAMTAS1
  5470. FDB5 20 91 FE      JSR MEMTST
  5471. FDB8 A5 97         LDA REGSAV
  5472. FDBA F0 22         BEQ RAMTAS3    ;$FDDE
  5473. FDBC B0 F1         BCS RAMTASLP1    ;$FDAF
  5474.  
  5475. FDBE A4 C2         LDY STAL+1
  5476. FDC0 A6 C1         LDX STAL
  5477. FDC2 C0 20         CPY #$20
  5478. FDC4 90 25         BCC RATS3+2    ;$FDEB
  5479.  
  5480. FDC6 C0 21         CPY #$21
  5481. FDC8 B0 08         BCS RAMTAS2    ;$FDD2
  5482.  
  5483. FDCA A0 1E         LDY #$1E
  5484. FDCC 8C 88 02      STY HIPAGE
  5485.  
  5486. RAMTAS1A
  5487. FDCF 4C 7B FE      JMP STOTOP    ;$FE7B
  5488.  
  5489. RAMTAS2
  5490. FDD2 A9 12         LDA #$12
  5491. FDD4 8D 82 02      STA OSSTAR+1
  5492. FDD7 A9 10         LDA #$10
  5493. FDD9 8D 88 02      STA HIPAGE
  5494. FDDC D0 F1         BNE RAMTAS1A    ;$FDCF
  5495.  
  5496. RAMTAS3
  5497. FDDE 90 CF         BCC RAMTASLP1    ;$FDAF
  5498.  
  5499. FDE0 A5 C2         LDA STAL+1
  5500. FDE2 8D 82 02      STA OSSTAR+1
  5501. FDE5 85 97         STA REGSAV
  5502. FDE7 C9 11         CMP #$11
  5503.  
  5504. RATS3
  5505. FDE9 90 C4         BCC RAMTASLP1    ;$FDAF
  5506.  
  5507. I6561LP
  5508. FDEB 20 C3 E5      JSR V6561I-2    ;$E5C3
  5509. FDEE 4C EB FD      JMP I6561LP    ;$FDEB
  5510.  
  5511.  
  5512. ;====================================================================
  5513. ; TAPEVC - Tape IRQ vectors
  5514. ;
  5515. TAPEVC
  5516. FDF1 .dw $FCA8, $FC0B, $EABF, $F98E
  5517.  
  5518.  
  5519. ;====================================================================
  5520. ; IOINIT - Initialize I/O
  5521. ;
  5522. IOINIT
  5523. FDF9 A9 7F         LDA #$7F
  5524. FDFB 8D 1E 91      STA D1IER
  5525. FDFE 8D 2E 91      STA D2IER
  5526. FE01 A9 40         LDA #$40
  5527. FE03 8D 2B 91      STA D2ACR
  5528. FE06 A9 40         LDA #$40
  5529. FE08 8D 1B 91      STA D1ACR
  5530. FE0B A9 FE         LDA #$FE
  5531. FE0D 8D 1C 91      STA D1PCR
  5532. FE10 A9 DE         LDA #$DE
  5533. FE12 8D 2C 91      STA D2PCR
  5534. FE15 A2 00         LDX #$00
  5535. FE17 8E 12 91      STX $911
  5536. FE1A A2 FF         LDX #$FF
  5537. FE1C 8E 22 91      STX D2DDRB
  5538. FE1F A2 00         LDX #$00
  5539. FE21 8E 23 91      STX D2DDRA
  5540. FE24 A2 80         LDX #$80
  5541. FE26 8E 13 91      STX D1DDRB
  5542. FE29 A2 00         LDX #$00
  5543. FE2B 8E 1F 91      STX D1ORAH
  5544. FE2E 20 84 EF      JSR SCLK1
  5545. FE31 A9 82         LDA #$82
  5546. FE33 8D 1E 91      STA D1IER
  5547. FE36 20 8D EF      JSR SCLK0
  5548. ;
  5549. ; ENABTM - Enable timer
  5550. ;
  5551. ENABTM
  5552. FE39 A9 C0         LDA #$C0
  5553. FE3B 8D 2E 91      STA D2IER
  5554. FE3E A9 89         LDA #$89
  5555. FE40 8D 24 91      STA D2TM1L
  5556. FE43 A9 42         LDA #$42
  5557. FE45 8D 25 91      STA D2TM1L+1
  5558. FE48 60            RTS
  5559.  
  5560.  
  5561. ;====================================================================
  5562. ; ISETNM - Set filename (internal)
  5563. ;
  5564. ISETNM
  5565. FE49 85 B7         STA FNMLEN
  5566. FE4B 86 BB         STX FNPTR
  5567. FE4D 84 BC         STY FNPTR+1
  5568. FE4F 60            RTS
  5569.  
  5570.  
  5571. ;====================================================================
  5572. ; ISETLF - Set logical file parameters (internal)
  5573. ;
  5574. ISETLF
  5575. FE50 85 88         STA $88
  5576. FE52 86 BA         STX CHANNL
  5577. FE54 84 B9         STY SECADR
  5578. FE56 60            RTS
  5579.  
  5580.  
  5581. ;====================================================================
  5582. ; IRDST - Get I/O status word (internal)
  5583. ;
  5584. IRDST
  5585. FE57 A5 BA         LDA CHANNL
  5586. FE59 C9 02         CMP #$02
  5587. FE5B D0 0B         BNE ISETMS+2    ;$FE68
  5588.  
  5589. FE5D AD 97 02      LDA RSSTAT
  5590. FE60 A9 00         LDA #$00
  5591. FE62 8D 97 02      STA RSSTAT
  5592. FE65 60            RTS
  5593.     
  5594.  
  5595. ;====================================================================
  5596. ; ISETMS - Control OS messages (internal)
  5597. ;
  5598. ISETMS
  5599. FE66 85 9D         STA CMDMOD
  5600. FE68 A5 90         LDA CSTAT
  5601.  
  5602. ISETMS1
  5603. FE6A 05 90         ORA CSTAT
  5604. FE6C 85 90         STA CSTAT
  5605. FE6E 60            RTS
  5606.  
  5607.  
  5608. ;====================================================================
  5609. ; ISETTO - Set IEEE timeout (internal)
  5610. ;
  5611. ISETTO
  5612. FE6F 8D 85 02      STA STIMOT
  5613. FE72 60            RTS
  5614.  
  5615.  
  5616. ;====================================================================
  5617. ; IMEMTP - Set/read top of memory (internal)
  5618. ;
  5619. IMEMTP
  5620. FE73 90 06         BCC STOTOP    ;$FE7B
  5621. FE75 AE 83 02      LDX OSTOP
  5622. FE78 AC 84 02      LDY OSTOP+1
  5623.  
  5624. STOTOP
  5625. FE7B 8E 83 02      STX OSTOP
  5626. FE7E 8C 84 02      STY OSTOP+1
  5627. FE81 60            RTS
  5628.  
  5629.  
  5630. ;====================================================================
  5631. ; IMEMBT - Set/read bottom of memory  (internal)
  5632. ;
  5633. IMEMBT
  5634. FE82 90 06         BCC STOBOT    ;$FE8A
  5635. FE84 AE 81 02      LDX OSSTAR
  5636. FE87 AC 82 02      LDY OSSTAR+1
  5637.  
  5638. STOBOT
  5639. FE8A 8E 81 02      STX OSSTAR
  5640. FE8D 8C 82 02      STY OSSTAR+1
  5641. FE90 60            RTS
  5642.  
  5643.  
  5644. ;====================================================================
  5645. ; MEMTST - Test memory
  5646. ;
  5647. MEMTST
  5648. FE91 B1 C1         LDA (STAL),Y
  5649. FE93 AA            TAX
  5650. FE94 A9 55         LDA #%01010101    ;$55
  5651. FE96 91 C1         STA (STAL),Y
  5652. FE98 D1 C1         CMP (STAL),Y
  5653. FE9A D0 08         BNE MEMTS1    ;$FEA4
  5654.  
  5655. FE9C 6A            ROR
  5656. FE9D 91 C1         STA (STAL),Y
  5657. FE9F D1 C1         CMP (STAL),Y
  5658. FEA1 D0 01         BNE MEMTS1    ;$FEA4
  5659. FEA3 A9     .db $A9    ;LDA #$18
  5660.  
  5661. MEMTS1
  5662. FEA4 18         CLC     
  5663. FEA5 8A            TXA
  5664. FEA6 91 C1         STA (STAL)
  5665. FEA8 60            RTS
  5666.  
  5667.  
  5668. ;====================================================================
  5669. ; NMI - NMI transfer entry
  5670. ;====================================================================
  5671. NMI
  5672. FEA9 78            SEI
  5673. FEAA 6C 18 03      JMP (NMIVP)    ;$FEAD
  5674.  
  5675.  
  5676. ;====================================================================
  5677. ; LNKNMI - Link to NMI code
  5678. ;
  5679. LNKNMI
  5680. FEAD 48            PHA
  5681. FEAE 8A            TXA
  5682. FEAF 48            PHA
  5683. FEB0 98            TYA
  5684. FEB1 48            PHA
  5685. FEB2 AD 1D 91      LDA D1IFR
  5686. FEB5 10 48         BPL WARM2-3    ;$FEFF EOI
  5687.  
  5688. FEB7 2D 1E 91      AND D1IER
  5689. FEBA AA            TAX
  5690. FEBB 29 02         AND #%00000010    ;$02
  5691. FEBD F0 1F         BEQ WARM1    ;$FEDE
  5692.  
  5693. FEBF 20 3F FD      JSR SCNROM
  5694. FEC2 D0 03         BNE LNKNMI1    ;$FEC7 skip A0 init
  5695.  
  5696. FEC4 6C 02 A0      JMP (A0BASE+2)
  5697.  
  5698. LNKNMI1
  5699. FEC7 2C 11 91      BIT D1OUTA
  5700. FECA 20 34 F7      JSR IUDTIM
  5701. FECD     JSR (STOPVP)    ;STOP
  5702. FED0 D0 2B         BNE WARM2-3    ;$FEFF EOI
  5703.  
  5704. ;====================================================================
  5705. ; WARMST - Default USER vector
  5706. ;
  5707. WARMST
  5708. FED2 20 52 FD      JSR RESTOR
  5709. FED5 20 F9 FD      JSR IOINIT
  5710. FED8 20 18 E5      JSR CINT1
  5711. FEDB 6C 02 C0      JMP (BASICRB+2)
  5712.  
  5713. WARM1
  5714. FEDE AD 1E 91      LDA D1IER
  5715. FEE1 09 80         ORA #%10000000    ;$80
  5716. FEE3 48            PHA
  5717. FEE4 A9 7F         LDA #%01111111    ;$7F
  5718. FEE6 8D 1E 91      STA D1IER
  5719. FEE9 8A            TXA
  5720. FEEA 29 40         AND #$40
  5721. FEEC F0 14         BEQ WARM2    ;$FF02
  5722.  
  5723. FEEE A9 CE         LDA #%11001110    ;$CE
  5724. FEF0 05 B5         ORA NXTBIT
  5725. FEF2 8D 1C 91      STA D1PCR
  5726. FEF5 AD 14 91      LDA D1TM1L
  5727. FEF8 68            PLA
  5728. FEF9 8D 1E 91      STA D1IER
  5729. FEFC 20 A3 EF      JSR SSEND
  5730. FEFF 4C 56 FF      JMP EOI
  5731.  
  5732. WARM2
  5733. FF02 8A            TXA    ;serial NMI
  5734. FF03 29 20         AND #%00100000    ;$20
  5735. FF05 F0 25         BEQ WARM3    ;$FF2C
  5736.  
  5737. FF07 AD 10 91      LDA D1OUTB
  5738. FF0A 29 01         AND #%00000001    ;$01
  5739. FF0C 85 A7         STA INBIT
  5740. FF0E AD 18 91      LDA D1TM2L
  5741. FF11 E9 16         SBC #$16
  5742. FF13 6D 99 02      ADC BAUDOF
  5743. FF16 8D 18 91      STA D1TM2L
  5744. FF19 AD 19 91      LDA D1TM2L+1
  5745. FF1C 6D 9A 02      ADC BAUDOF+1
  5746. FF1F 8D 19 91      STA D1TM2L+1
  5747. FF22 68            PLA
  5748. FF23 8D 1E 91      STA D1IER
  5749. FF26 20 36 F0      JSR SERRX
  5750. FF29 4C 56 FF      JMP EOI
  5751.  
  5752. WARM3
  5753. FF2C 8A            TXA
  5754. FF2D 29 10         AND #%00010000    ;$10
  5755. FF2F F0 25         BEQ EOI
  5756.  
  5757. FF31 AD 93 02      LDA M51CTR
  5758. FF34 29 0F         AND #%00001111    ;$0F
  5759. FF36 D0 00         BNE $+1    ;$FF38
  5760. FF38 0A            ASL
  5761. FF39 AA            TAX
  5762. FF3A BD 5A FF      LDA R232TB-2,X    ;$FF5A,X
  5763. FF3D 8D 18 91      STA D1TM2L
  5764. FF40 BD 5B FF      LDA R232TB-1,X    ;$FF5B,X
  5765. FF43 8D 19 91      STA D1TM2L+1
  5766. FF46 AD 10 91      LDA D1OUTB
  5767. FF49 68            PLA
  5768. FF4A 09 20         ORA #$20
  5769. FF4C 29 EF         AND #$EF
  5770. FF4E 8D 1E 91      STA D1IER
  5771. FF51 AE 98 02      LDX BITNUM
  5772. FF54 86 A8         STX TPRWRE
  5773. ;
  5774. ; EOI - End of Interrupt external entry point
  5775. ;
  5776. EOI
  5777. FF56 68            PLA
  5778. FF57 A8            TAY
  5779. FF58 68            PLA
  5780. FF59 AA            TAX
  5781. FF5A 68            PLA
  5782. FF5B 40            RTI
  5783.  
  5784.  
  5785. ;====================================================================
  5786. ; 232TBL - Baud rate tables
  5787. ;
  5788. R232TB
  5789. FF5C .db $92, $27, $40, $1A, $C6, $11, $74, $0E
  5790. FF64 .db $EE, $0C, $45, $06, $F1, $02, $46, $01
  5791. FF6C .db $B8, $00, $71, $00, $2A, $00
  5792.  
  5793. ;====================================================================
  5794. ; IRQ - IRQ transfer point
  5795. ;====================================================================
  5796. IRQ
  5797. FF72 46            PHA
  5798. FF73 8A            TXA
  5799. FF74 48            PHA
  5800. FF75 98            TYA
  5801. FF76 48            PHA
  5802. FF77 BA            TSX
  5803. FF78 BD 04 01      LDA FBUFFR+4,X    ;$0104,X
  5804. FF7B 29 10         AND #%00010000    ;$10    breakpoint or IRQ
  5805. FF7D F0 03         BEQ BRKSKIP    ;$FF82
  5806.  
  5807. FF7F 6C 16 03      JMP (BRKVP)
  5808.  
  5809. BRKSKIP
  5810. FF82 6C 14 03      JMP (IRQVP)
  5811.  
  5812. FF85 .dw $FFFF
  5813. FF87 .dw $FFFF        ; padding
  5814.  
  5815.  
  5816. ;====================================================================
  5817. ; - Vector table
  5818. ;
  5819. FF8A 4C 52 FD  JMP IRESTR        ;$FD52 RESTOR
  5820. FF8D 4C 57 FD  JMP IVECTR        ;$FD57 VECTOR
  5821. FF90 4C 66 FE  JMP ISETMS        ;$FE66 SETMSG
  5822. FF93 4C C0 EE  JMP ISECND        ;$EEC0 SECND
  5823. FF96 4C CE EE  JMP ITKSA        ;$EECE
  5824. FF99 4C 73 FE  JMP IMEMTP        ;$FE73
  5825. FF9C 4C 82 FE  JMP IMEMBT        ;$FE82
  5826. FF9F 4C 1E EB  JMP ISCNKY        ;$EB1E
  5827. FFA2 4C 6F FE  JMP ISETTO        ;$FE6F SETTMO
  5828. FFA5 4C 19 EF  JMP IACPTR        ;$EF19 ACPTR
  5829. FFA8 4C E4 EE  JMP ICIOUT        ;$EEE4
  5830. FFAB 4C F6 EE  JMP IUNTLK        ;$EEF6
  5831. FFAE 4C 04 EF  JMP IUNLSN        ;$EF04
  5832. FFB1 4C 16 EE  JMP ILISTN        ;$EE16 
  5833. FFB4 4C 14 EE  JMP ITALK        ;$EE14
  5834. FFB7 4C 57 FE  JMP IRDST        ;$FE57 READST
  5835. FFBA 4C 50 FE  JMP ISETLF        ;$FE50 SETLFS
  5836. FFBD 4C 49 FE  JMP ISETNM        ;$FE49
  5837. FFC0 6C 1A 03  JMP (OPENVP)        ;$F40A OPEN
  5838. FFC3 6C 1C 03  JMP (CLOSVP)        ;$F34A CLOSE
  5839. FFC6 6C 1E 03  JMP (CKINVP)        ;$F2C7 CHKIN
  5840. FFC9 6C 20 03  JMP (CKOTVP)        ;$F309 CHKOUT
  5841. FFCC 6C 22 03  JMP (CLCHVP)        ;$F3F3 CLRCH
  5842. FFCF 6C 24 03  JMP (CHINVP)        ;$F20E CHRIN
  5843. FFD2 6C 26 03  JMP (CHOTVP)        ;$F27A CHROUT
  5844. FFD5 4C 42 F5  JMP ILOAD        ;$F542
  5845. FFD8 4C 75 F6  JMP ISAVE        ;$F675
  5846. FFDB 4C 67 F7  JMP ISETTM        ;$F767 SETTIM
  5847. FFDE 4C 60 F7  JMP IRDTIM        ;$F760
  5848. FFE1 6C 28 03  JMP (STOPVP)        ;$F770 STOP
  5849. FFE4 6C 2A 03  JMP (GTINVP)        ;$F1F5 GETIN
  5850. FFE7 6C 2C 03  JMP (CLALVP)        ;$F3EF CLALL
  5851. FFEA 4C 34 F7  JMP IUDTIM        ;$F734
  5852. FFED 4C 05 E5  JMP ISCREN        ;$E505
  5853. FFF0 4C 0A E5  JMP IPLOT        ;$E50A
  5854. FFF3 4C 00 E5  JMP IOBASE        ;$E500
  5855. ;
  5856. ;Unused vectors
  5857. ;
  5858. FFF6 .dw $FFFF
  5859. FFF8 .dw $FFFF
  5860.  
  5861.  
  5862. ;====================================================================
  5863. ; - Power-on Vectors
  5864. ;
  5865. FFFA .dw NMI        ;$FEA9
  5866. FFFC .dw RESET        ;$FD22
  5867. FFFE .dw IRQ        ;$FF72
  5868. VIC-20 Kernel ROM    Page 6
  5869. 03/13/97 2:23 PM
  5870.  
  5871.  
  5872.  
  5873.  
  5874.  
  5875.